我需要从列表ID
和X
,WHERE X = 'Y'
的一个表中选择所有ID。对于每个ID
,我需要在不同的表中查找一些内容:
如果ID
不存在,则最终结果中没有行。
如果ID
确实存在,我想做一些逻辑来判断它是否有一行。为简单起见,假设逻辑为:if column Q > 0
。
所以最后的结果只是一列ID
s,因为他们因上述两个原因之一被取消资格而抛出一些。
感谢。
答案 0 :(得分:1)
如果我的问题正确,那么这可能就是你要找的:
select id from your_table
where X = 'Y'
and id in (select id from other_table where Q > 0)
答案 1 :(得分:1)
这是为JOIN
制作的。
SELECT table1.* FROM table1
INNER JOIN table2
ON table1.ID = table2.table1_ID
AND table2.Q > 0;
这将选择table1中的所有记录(具有ID),然后删除表2中没有匹配记录的任何记录,或者没有Q> 0
答案 2 :(得分:1)
您可以使用子查询:
SELECT id FROM table1 WHERE table1.id IN (SELECT q FROM table2 WHERE table2.q > 0) AND table1.x='y'
SQL将检查最外层查询的结果是否在子查询中(括号中的部分),如果不是,则不会返回任何内容。