2013-05-14 132 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