2012-03-02 139 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將檢查是否從最外面的查詢結果的子查詢(括號中的部分),如果他們不將不會返回任何東西。