2013-05-14 134 views
0

我有兩個表格A和表格B。用SQL中的條件選擇查詢

表-A包含

id   
1 
2 
3 
4 

表-B包含

id tno data 
1  1 regec 
1  2 marsec 
1  0 lorem 
2  1 ipsum 
2  0 doller 
3  2 sit 
3  0 amet 
3  1 lipsum 

在這些表中的id列是主鍵。我想從Table-A獲得所有的ID,它們在表B中沒有對應的行,tno爲'2'。

我的結果集看起來像這樣

id 
2 
4 
+1

請發表您嘗試... – 2013-05-14 09:35:04

回答

5
SELECT a.id 
FROM tableA a 
WHERE a.id NOT IN (
    SELECT b.id 
    FROM tableB b 
    WHERE b.tno = 2 
) 

SQLFIddle Demo

3
SELECT id FROM tableA WHERE id NOT IN (SELECT id FROM tableB WHERE tno=2) 
+0

更換'TableA'到'TableA'之後不會編譯時出現錯誤:'EXIST'附近的語法不正確:SELECT id FROM TableA WHERE id NOT EXIST(SELECT id FROM TableB WHERE tno = 2)' – mvp 2013-05-14 10:19:26

+0

我再次檢查並根據微軟它應該工作http://msdn.microsoft.com/en-us/library/ms184297(v=sql.105).aspx – 2013-05-14 10:36:24

+0

你檢查?真?究竟如何?誰在乎微軟說如果它甚至不編譯!這是你在[SQLfiddle](http://www.sqlfiddle.com/#!3/1ae9e/21) – mvp 2013-05-14 10:47:30

2
SELECT id FROM [Table-A] where Id not in(SELECT id FROM [Table-B] WHERE tno=2) 
+1

不錯的複製粘貼從另一個答案,它甚至包括無效的語法。 – mvp 2013-05-14 09:59:04

+0

@mvp:你爲什麼這樣評論? – 2013-05-14 10:01:30

+1

因爲你沒有費心嘗試。 'SELECT ID FROM Table-A'不可能是正確的SQL,永遠。 'SELECT ID FROM TableA' - 也許。 – mvp 2013-05-14 10:02:39