> ## Documentation Index
> Fetch the complete documentation index at: https://docs.kasoftware.com/llms.txt
> Use this file to discover all available pages before exploring further.

# MySQL 查询配置

> 从 MySQL 检索记录，并使用这些记录在工作流中生成知行之桥消息。

export const DbasaSelectExampleFlow = ({datasource = "the data source", selectXmlFlow = "dbsa_select_flow.png", siteNameShort = "知行之桥"}) => <>
    <p>为 Select 配置的 {datasource} 端口选择表和列后，将端口放置在 {siteNameShort} 工作流的开头。下面的屏幕截图描述了一个示例流程，其中包含一个 {datasource} Select 端口、一个 XML Map 端口、一个 CSV 端口和一个 File 端口：</p>

    <img src={`/public/images/${selectXmlFlow}`} width="900" />

    <p>此示例工作流中的数据通过以下步骤：</p>

    <ol>
      <li><strong>{datasource}_Select</strong> 端口从 {datasource} 连接中提取数据。</li>
      <li>此数据作为 <strong>源文件</strong> 传递给 <strong>XML_Map</strong> 端口，后者映射到 <strong>源</strong> 的树状结构中。</li>
      <li>来自 <strong>CSV1</strong> 端口的数据作为 <strong>目标文件</strong> 传递给 <strong>XML_Map</strong> 端口，后者映射到 <strong>目标</strong> 的树状结构。
        <img src="/public/images/dbsa_xmlmap_select.png" width="800" />
      </li>
      <li><strong>XML_Map</strong> 端口尝试自动将 <strong>源</strong> 元素映射到具有相同名称的 <strong>目标</strong> 元素。你可以手动更改这些并通过将元素从 <strong>源</strong> 拖到 <strong>目标</strong> 来填充空白映射。
        <img src="/public/images/dbsa_xmlmap_elements.png" width="800" />
      </li>
      <li>来自 <strong>CSV1</strong> 的文件已经用来自 <strong>{datasource}_Select</strong> 的数据进行了修改，然后向下传递来自 <strong>CSV1</strong> 的工作流。</li>
    </ol>
  </>;

export const DbasaSelectJoinAdvanced = () => <>
    <p><strong>编辑源结构</strong>对话框右侧的<strong>选项</strong>面板包含控制端口如何处理记录的设置。这些设置与 JOIN 设计器一起显示，并应用于整个联接查询。</p>

    <ul>
      <li><strong>使用列 [x] 处理新增或更改的记录</strong>：启用增量处理，使端口只选择自上次运行后新增或更改的行。在“联接表”配置中，此列必须来自基表（最左侧的表）；联接表中的列不可用于此设置。</li>
      <li><strong>处理行后以 [值] 更新 [列]</strong>：每行处理完成后，以指定值更新某一列。</li>
    </ul>

    <p>还可以在<strong>编辑源结构</strong>对话框顶部切换<strong>预览 XML</strong>或<strong>代码视图</strong>，以预览输出结构或查看底层 XML 配置。</p>
  </>;

export const DbasaSelectJoinResults = () => <>
    <p>点击<strong>应用</strong>后，结果结构中会出现 <strong>Results</strong> 节点。要配置联接输出的列和过滤器，请点击 Results 节点上的省略号（<strong>...</strong>），然后选择<strong>结果设置</strong>。</p>

    <p>随后会打开<strong>编辑结果设置</strong>对话框，其中包含<strong>列</strong>和<strong>过滤器</strong>两个选项卡。</p>

    <img src="/public/images/dbsa_join_results.png" alt="编辑结果设置对话框，其中列选项卡显示源表标签" width="800" />

    <p><strong>列</strong>选项卡列出所有联接表中的全部列。每列都带有表示其源表的标签。默认选中所有列；取消选中某列可将其从查询输出中排除。</p>

    <Note>当两个联接表包含同名列时，端口会自动使用表名作为重复列的前缀，以避免冲突。</Note>

    <p>在<strong>列</strong>选项卡底部，使用<strong>排序依据</strong>字段按列对输出排序，并选择 <strong>ASC</strong>（升序）或 <strong>DESC</strong>（降序）。</p>

    <p><strong>过滤器</strong>选项卡用于添加过滤器，以限制端口选择的行。有关更多信息，请参阅<a href="#过滤器">过滤器</a>。</p>
  </>;

export const DbasaSelectJoinedTables = ({datasource = "数据源"}) => <>
    <p>选择<strong>联接表</strong>作为结构类型后，会显示 JOIN 设计器。使用该设计器定义 {datasource} 中各表之间的关系。端口会将配置转换为一个 JOIN 查询。</p>

    <img src="/public/images/dbsa_join_designer.png" alt="包含空联接行字段的 JOIN 设计器" width="800" />

    <p>JOIN 设计器中的每一行表示一个联接关系，并包含以下字段：</p>

    <ul>
      <li><strong>联接类型</strong>：要执行的 SQL 联接类型。可用选项取决于 {datasource} 的支持情况，常见选项包括 <strong>Inner Join</strong>、<strong>Left Join</strong>、<strong>Right Join</strong> 和 <strong>Full Outer Join</strong>。</li>
      <li><strong>左表</strong>：联接左侧的表。第一行的左表是查询的基表。</li>
      <li><strong>左列</strong>：左表中用于联接的列。</li>
      <li><strong>右表</strong>：联接右侧的相关表。</li>
      <li><strong>右列</strong>：右表中与左列匹配的列。</li>
    </ul>

    <p>以下示例通过共享的 <strong>Id</strong> 列将 <strong>Bill</strong> 表与 <strong>Bill1</strong> 表联接：</p>

    <img src="/public/images/dbsa_join_addtable.png" alt="Bill 和 Bill1 表通过 Id 列联接的 JOIN 设计器" width="800" />
  </>;

export const DbasaSelectAdvancedSettings = () => <>
    <p><strong>编辑源结构</strong>对话框右侧的<strong>选项</strong>面板包含控制端口如何处理记录的设置。这些设置与表设计器一起显示，并应用于整个查询。</p>
    <ul>
      <li><strong>仅处理新增或更改的记录</strong>：启用增量处理，使端口只选择自上次运行后新增或更改的行。</li>
      <li><strong>处理行后以 [值] 更新 [列]</strong>：每行处理完成后，以指定值更新某一列。</li>
    </ul>

    <p>还可以在<strong>编辑源结构</strong>对话框顶部切换<strong>预览 XML</strong>或<strong>代码视图</strong>，以预览输出结构或查看底层 XML 配置。</p>
  </>;

export const DbasaSelectFilterGroups = () => <>
    <p>点击<strong>添加过滤器</strong>可创建多个过滤器。默认情况下，所有过滤器属于同一组。点击<strong>添加组</strong>可创建嵌套组，并使用不同逻辑分隔过滤器。</p>

    <p>每个组的顶部都有以下选项：</p>

    <ul>
      <li><strong>NOT</strong> 开关：反转整个组的逻辑。例如，对包含“Amount 小于或等于 5000”的组启用 NOT，会让端口仅选择 Amount 大于 5000 的行。</li>
      <li><strong>And / Or</strong> 开关：确定该组与相邻过滤器或组之间的关系。
        <ul>
          <li>选择 <strong>And</strong> 时，除相邻条件外，该组条件也必须为真。</li>
          <li>选择 <strong>Or</strong> 时，该组条件可作为相邻条件的替代项。</li>
        </ul>
      </li>
    </ul>

    <p>下图展示了包含多个过滤器组的示例。</p>

    <img src="/public/images/dbsa_filter_group.png" alt="显示 AND 和 OR 逻辑的多个过滤器组" width="800" />

    <p>在此示例中，必须同时满足以下所有条件：</p>
    <ul>
      <li><strong>Vendor</strong> 列包含 <strong>CData</strong></li>
      <li><strong>Status</strong> 列等于 <strong>Active</strong> 或 <strong>Pending</strong></li>
      <li><strong>Amount</strong> 列_不_小于或等于 <strong>5000</strong>（即 Amount 大于 5000）</li>
    </ul>

    <p>满足过滤条件后，端口会选择匹配的数据，并将其传递到工作流下游。</p>
  </>;

export const DbasaSelectFilterRule = () => <>
    <p>按照以下步骤创建过滤器：</p>

    <ol>
      <li>点击<strong>添加过滤器</strong>。</li>
      <li>在列下拉列表中选择要过滤的列。</li>
      <li>在条件下拉列表中选择过滤条件。可用条件取决于所选列的数据类型。例如，数值列支持<strong>小于或等于</strong>，而字符串列支持<strong>包含</strong>。</li>
      <li>在值字段中输入值。如果条件不需要值（例如<strong>为空</strong>），则不会显示值字段。</li>
    </ol>

    <p>下图展示了对 <strong>Vendor</strong> 列设置过滤器的示例。应用此过滤器后，端口仅选择 <strong>Vendor</strong> 列包含 <strong>CData</strong> 的行。</p>

    <img src="/public/images/dbsa_filter.png" alt="Vendor 列配置为包含 CData 的过滤器" width="800" />
  </>;

export const DbasaSelectFilters = () => <>
    <p>可以选择添加过滤器，以限制端口选择的数据。在设置对话框中点击<strong>过滤器</strong>选项卡进行配置。端口会将过滤器转换为查询语法。</p>

    <Note>如果用例不需要，则无需对数据应用过滤器。</Note>
  </>;

export const DbasaSelectTableResults = ({connectorSlug}) => <>
    <p>点击<strong>应用</strong>后，结果结构中会出现 <strong>Items</strong> 节点。要配置查询的列和过滤器，请点击表名节点上的省略号（<strong>...</strong>），然后选择<strong>表设置</strong>。</p>

    <p>随后会打开<strong>编辑 [表名] 设置</strong>对话框，其中包含<strong>列</strong>和<strong>过滤器</strong>两个选项卡。</p>

    <img src="/public/images/dbsa_join_results.png" alt="编辑表设置对话框，其中列选项卡显示源表标签" width="800" />

    <p><strong>列</strong>选项卡列出所选表中的所有列。每列都带有表示其源表的标签。默认选中所有列；取消选中某列可将其从查询输出中排除。</p>

    <Note>可以点击<strong>源</strong>表名称链接返回<strong>编辑源结构</strong>窗格，以选择更多表。有关更多信息，请参阅<a href={connectorSlug ? `/26.3/self-hosted/zh/connectors/${connectorSlug}/${connectorSlug}-ac#child-tables` : "#child-tables"}>子表</a>。</Note>

    <p>在<strong>列</strong>选项卡底部，使用<strong>排序依据</strong>字段按列对输出排序，并选择 <strong>ASC</strong>（升序）或 <strong>DESC</strong>（降序）。</p>

    <p><strong>过滤器</strong>选项卡用于添加过滤器，以限制端口选择的行。有关更多信息，请参阅<a href="#过滤器">过滤器</a>。</p>
  </>;

export const DbasaSelectTablesAndColumns = ({datasource = "数据源", connectorSlug}) => <>
    <p>使用下拉列表从 {datasource} 中选择目标表。</p>

    <img src="/public/images/dbsa_select_tableadd_263.png" alt="源结构编辑器中用于选择目标表的下拉列表" width="700" />

    <p>使用箭头向结构中添加子表。下图以 Bill 为父表，并准备选择一个子表。完成选择后，点击<strong>应用</strong>。</p>

    <img src="/public/images/dbsa_tablelist_263.png" alt="表列表，其中 Bill 为父表，并准备选择子表" width="800" />
  </>;

export const DbasaSelectStructureType = ({datasource = "数据源"}) => <>
    <p>配置并测试连接后，点击<strong>操作</strong>选项卡。确保<strong>操作</strong>下拉列表设为 <strong>Select</strong>，然后点击<strong>添加表结构</strong>以定义表和列。</p>

    <p>选择<strong>结构类型</strong>。结构类型决定端口如何查询 {datasource}。可用类型包括：</p>

    <ul>
      <li><a href="#父表和子表">父表和子表</a>：端口使用父子层次结构查询表。可以将其他表添加为子表，或在工作流中使用多个端口。</li>
      <li><a href="#联接表">联接表</a>：端口发出一个 JOIN 查询，将两个或多个相关表的数据合并。</li>
    </ul>

    <p>以下各节介绍这些结构类型。</p>

    <Note>“联接表”只向 {datasource} 发出一个查询。对于实施 API 速率限制的数据源，这比“父表和子表”方式更高效。</Note>
  </>;

export const DbasaSelectIntro = ({datasource = "the data source", siteName = "知行之桥"}) => <p>Select 操作从 {datasource} 检索数据并将其带入 {siteName}。</p>;

<DbasaSelectIntro datasource="MySQL" />

## 表和列

<DbasaSelectStructureType datasource="MySQL" />

### 父表和子表

<DbasaSelectTablesAndColumns datasource="MySQL" connectorSlug="mysql" />

#### 结果

<DbasaSelectTableResults connectorSlug="mysql" />

#### 选项

<DbasaSelectAdvancedSettings />

### 联接表

<DbasaSelectJoinedTables datasource="MySQL" />

这会生成等效于以下内容的查询：

```sql theme={null}
SELECT ... FROM Bill INNER JOIN Bill1 ON Bill.Id = Bill1.Id
```

要联接两个以上的表，请点击**添加联接**再添加一行。每个新增行都会将一个新表联接到前一行的结果。

完成联接配置后，点击**应用**。

#### 结果

<DbasaSelectJoinResults />

#### 选项

<DbasaSelectJoinAdvanced />

## 过滤器

<DbasaSelectFilters />

### 创建过滤器

<DbasaSelectFilterRule />

### 过滤器组

<DbasaSelectFilterGroups />

\##知行之桥工作流示例

<DbasaSelectExampleFlow datasource="MySQL" selectXmlFlow="mysql_xmlflow_select.png" />
