SQL如何从两张表中按id3=100的条件查询所有符合要求的id1
你遇到的报错是因为=运算符只能用于匹配单个值,当子查询返回多个id2结果时就会触发异常,有两种常用的正确写法:
- 方案1:将
=替换为IN运算符,适配多值匹配场景
SELECT id1 FROM "table 1" WHERE id2 IN (SELECT id2 FROM "table 2" WHERE id3=100);
如果id3字段是数值类型,不需要加单引号包裹100,避免隐式类型转换拖慢查询性能。
- 方案2:使用内连接实现,数据量较大时性能通常优于子查询写法
-- 加DISTINCT是为了避免关联后产生重复的id1记录,确定无重复可以省略 SELECT DISTINCT t1.id1 FROM "table 1" t1 INNER JOIN "table 2" t2 ON t1.id2 = t2.id2 WHERE t2.id3 = 100;
内容的提问来源于stack exchange,提问作者Nika_Rika
相关产品推荐
相关产品推荐

