如何在主查询与子查询中使用WHERE条件?SQL报错求助
排查你的SQL语法错误及修正方案
嘿,我一眼就发现了导致报错的核心问题——你的主查询里连续用了两个WHERE关键字,这是SQL语法的大忌!一个SELECT语句只能有一个WHERE子句,多个过滤条件只需要用AND/OR连接起来就好。
按照你的需求,我已经把修正后的SQL写出来了:
select * from products c where c.company = "Apple" and c.id in ( select bi.component_id from category ct join items bi on ct.id = bi.id where ct.id in (1,2,3) )
修正点说明:
- 移除了主查询中多余的第二个
WHERE,将c.company = "Apple"和c.id in (...)两个条件用AND合并到同一个WHERE子句下,这是解决报错的关键。 - 顺便给SQL做了换行排版,这样后续排查问题时会更清晰,也符合SQL的书写规范。
- 另外提一句:你用
ct.id = bi.id关联category和items表,如果这和你的业务逻辑匹配就没问题;如果实际应该是通过其他字段关联(比如bi.category_id = ct.id),记得根据实际情况调整关联条件哦。
内容的提问来源于stack exchange,提问作者klo
相关产品推荐
相关产品推荐

