使用其他查询的非常简单的SQL查询

时间:2012-03-02 21:13:59

标签: sql

我需要从列表IDXWHERE X = 'Y'的一个表中选择所有ID。对于每个ID,我需要在不同的表中查找一些内容:

如果ID不存在,则最终结果中没有行。

如果ID确实存在,我想做一些逻辑来判断它是否有一行。为简单起见,假设逻辑为:if column Q > 0

所以最后的结果只是一列ID s,因为他们因上述两个原因之一被取消资格而抛出一些。

感谢。

3 个答案:

答案 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将检查最外层查询的结果是否在子查询中(括号中的部分),如果不是,则不会返回任何内容。