# NL2SQL：业务规则、表关联与标准问答

这三类配置分别解决“如何理解业务”“如何连接数据”和“常见问题怎样查询”。入口都在知识库的“语义配置 → NL2SQL 语义”。

## 业务规则

点击业务规则中的新建，填写业务规则标识，选择一张或多张关联表，再输入自然语言规则并保存。

规则应说明适用条件及例外，例如“查询年初余额时，取上一年度期末余额；当用户明确指定其他期间时按指定期间处理”。这类解释帮助智能体判断口径；必须固定追加到 SQL 的条件应使用[强制约束](nl2sql-advanced.md#query-constraints)。

保存后用一个符合规则的问题和一个例外问题验证，避免规则覆盖范围过大。

## 表关联

表关联定义两张表的连接方向、类型和字段，避免智能体根据相似字段名错误连接。

1. 新建表关联，填写标识和说明。
2. 选择左表与右表。
3. 选择 JOIN 类型，例如 LEFT JOIN 或 INNER JOIN。
4. 添加关联条件：左表字段、比较方式、右表字段；需要时添加多条条件。
5. 检查 JOIN SQL 预览的连接方向和条件组合，再保存。

例如订单表与客户表通过客户编号关联。需要保留尚未匹配到客户的订单时，应核对连接类型是否符合这个业务目标；只希望保留匹配记录时则采用相应的连接方式。

验证时检查未匹配记录、重复键和结果行数。连接能执行不代表不会重复累计金额。

## 标准问答

结构化标准问答保存标准问题和经业务确认的 SQL。它与 RAG 标准问答保存文字答案的用途不同。

1. 新建标准问答，填写标识和场景说明。
2. 填写标准问题，并添加业务对象和关键条件相同的相似问法。
3. 选择参考使用或强制使用。
4. 填写经过确认的完整只读 SQL，通过校验后保存。
5. 分别测试标准问法、等价问法以及条件不同的问法。

| 使用方式 | 含义 |
| --- | --- |
| 参考使用 | 作为回答和 SQL 生成参考，结合其他语义配置判断 |
| 强制使用 | 查询意图、业务对象和关键筛选条件一致时，可使用配置 SQL |

SQL 只支持一条只读 SELECT 或 WITH 查询，不能包含写入、结构修改或多条语句。语法校验成功后，还需检查源表、筛选条件和实际返回结果。

不要把“本月销售额”和“上月销售额”作为固定同一 SQL 的等价问题，除非查询逻辑确实支持并正确处理这种期间差异。
