如何在JOIN条件中使用IN子句?查询语法报错求解
你的SQL语句问题分析
- 语法可行性:只要
comeColumn是someTable里真实存在的列,这条语句语法上是合法的,能正常执行,但逻辑大概率不符合你的预期。 - 核心逻辑问题:当前LEFT JOIN只限定了
t2的列条件,没添加t1和t2的关联字段(比如t1.id = t2.related_id这类关联逻辑),执行后会是t1中ID为248、226的每一行,都和t2里所有comeColumn为9或8的行做笛卡尔积,返回大量冗余数据。 - 修正方向:如果是要做自关联查询,需要补上关联条件,示例如下:
SELECT t1.* FROM someTable t1 LEFT JOIN someTable t2 ON t1.ID = t2.parent_id AND t2.comeColumn IN (9, 8) WHERE t1.ID in (248, 226)
- 额外提醒:检查下
comeColumn是不是拼写错误?比如是不是想写someColumn?要是列名写错了,肯定会触发语法错误。
内容的提问来源于stack exchange,提问作者TinyButBig
相关产品推荐
相关产品推荐

