2012-03-02 105 views
0

我需要从列表中选择所有ID,列号为IDX,WHERE X = 'Y'。对于每个ID s,我需要在不同的表中查找一些东西:使用另一个查询的非常简单的SQL查询

如果ID不存在,它在最终结果中不会获得任何行。

如果ID确实存在,我想要做一些逻辑来确定它是否得到一个行。为了简单起见,假设逻辑是:如果列Q > 0

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

谢谢。

+2

编辑你的问题的格式。请使用'code'和'blockquote'编辑器选项并放置一些线路断路器。 – 2012-03-02 21:17:04

回答

1

这是JOIN s的用于制造。

SELECT table1.* FROM table1 
INNER JOIN table2 
    ON table1.ID = table2.table1_ID 
    AND table2.Q > 0; 

这将选择表1中的所有记录(有标识),然后删除那些没有在表2匹配的记录或没有问答的任何记录> 0

1

如果我收到了你的问题的权利,这可能是你在找什么:

select id from your_table 
where X = 'Y' 
and id in (select id from other_table where Q > 0) 
1

可以使用子查询:

SELECT id FROM table1 WHERE table1.id IN (SELECT q FROM table2 WHERE table2.q > 0) AND table1.x='y'

SQL将检查是否从最外面的查询结果的子查询(括号中的部分),如果他们不将不会返回任何东西。