答案 0 :(得分:3)
你需要一个子查询(或连接或cte或派生表)子查询很容易可视化
从Test中选择*,其中ID为IN (来自Test的SELECT ID,其中VAL = 2)
答案 1 :(得分:2)
存在一种方法:
select t.*
from test t
where exists (select 1 from test t2 where t2.id = t.id and t2.val = 2);
答案 2 :(得分:1)
where id in (select id from ...)
和where exists (select 1 from ...)
之类的构造可能需要很长时间,因为test
中的每一行都在执行子查询。要解决您的问题,您可以将自己加入test
并像这样distinct
:
SELECT DISTINCT t1.*
FROM test t1
INNER JOIN test t2 ON t1.id = t2.id
WHERE t2.val = 2