You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何正确连接tbl_Item与tbl_conversion表并获取对应商品名称?

正确SQL写法及错误原因解析

错误原因

你写的子查询没有限定只匹配当前行的Item_Code,当tbl_conversion有多条记录时,子查询会返回所有符合JOIN条件的Item_Name集合,但作为字段表达式的子查询必须返回单个值,因此触发报错:

Subquery returned more than 1 value. This is not permitted when the subquery follows =, !=, <, <= , >, >= or when the subquery is used as an expression.

正确写法

方法1:两次LEFT JOIN关联表(推荐,可读性更高)

通过两次关联tbl_Item表,分别匹配Item_Code1和Item_Code2,直接获取对应的名称:

SELECT 
    tc.*,
    ti1.Item_Name AS Item_Name1,
    ti2.Item_Name AS Item_Name2
FROM tbl_conversion tc
LEFT JOIN tbl_Item ti1 ON tc.Item_Code1 = ti1.Item_Code
LEFT JOIN tbl_Item ti2 ON tc.Item_Code2 = ti2.Item_Code

使用LEFT JOIN可以保证即使Item_Code1或Item_Code2在tbl_Item中没有匹配记录,也能保留tbl_conversion的原始行,对应名称字段会显示为NULL。

方法2:关联子查询

给子查询添加WHERE条件,关联外层查询当前行的Item_Code,确保子查询只返回单个值:

SELECT 
    *,
    (SELECT Item_Name FROM tbl_Item WHERE Item_Code = tc.Item_Code1) AS Item_Name1,
    (SELECT Item_Name FROM tbl_Item WHERE Item_Code = tc.Item_Code2) AS Item_Name2
FROM tbl_conversion tc

这种写法适合只需要获取单个字段的场景,逻辑更聚焦。

内容的提问来源于stack exchange,提问作者Herry Abu

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.25 07:07:38