2009-04-17 112 views
3

我有一个包含唯一ID字段的表。另一个字段(REF)包含对另一个数据集ID字段的引用。 现在我必须选择REF指向不存在的数据集的所有数据集。如何在选择中进行选择

SELECT * FROM table WHERE ("no dataset with ID=REF exists") 

我该怎么做?

回答

1
SELECT * 
FROM table 
WHERE ((SELECT COUNT(*) FROM table2 WHERE table2.id = table.ref) = 0) 
+0

哈哈哈! -2分,我很高兴至少代码能够工作,即使它不是最好的,否则谁知道多少分! – antonioh 2009-04-17 16:03:44

5

我认为这应该工作

SELECT * FROM table WHERE id NOT IN (SELECT ref_id FROM ref_table) 

或JOIN

SELECT table.* 
FROM table LEFT JOIN ref_table ON table.id = ref_table.ref_id 
WHERE ref_table.ref_id IS NULL 
+0

将无法​​工作,如果你有NULL值 – SQLMenace 2009-04-17 15:50:55

3

你可以做一个子查询:

select * from table where somefield not in (select otherfield from sometable where ID=REF) 
+0

你不能在某些领域(选择* ...作为一个字段不能评估到很多 – cjk 2009-04-17 15:48:47

6

试试这个:

SELECT * FROM TABLE WHERE NOT EXISTS 
    (SELECT * FROM OtherTable WHERE TABLE.Ref = OtherTable.ID) 
+0

Table.ref = othertable.id – Jimmy 2009-04-17 15:47:08

1

类似的东西:

SELECT * FROM table WHERE ID NOT IN(SELECT REF FROM Table2) 
4
SELECT 
table1.* 
FROM 
table1 
LEFT JOIN table2 ON table1.id = table2.ref 
WHERE 
table2.ref IS NULL 
+0

SELECT Table1。* .. – cjk 2009-04-17 15:49:25

+1

+1, – 2009-04-17 15:53:34

0

哟耶我从众üliek选择,所以我们把选择在乌拉圭回合选择这样当你查询可以查询。

0

是的,你可以使用

SELECT * FROM x,其中不存在(SELECT * FROM Y)