查询从两个表中显示否定

时间:2013-02-25 16:14:57

标签: c# sql visual-studio-2010 listbox

我有两个列表框,listbox1和listbox2,以及DB,table1和table2中的两个表。两个表都包含一个名为“Color”的列。我想在listbox1中显示table1中的所有'Colors',我可以这样做。但是在listbox2中我想从Table2中显示'Colors',但它不能出现在Table1'Color'中。那么我该如何为它编写查询?

这就是我一直在尝试的,它不起作用:

SELECT Table2.Colour
FROM Table1 CROSS JOIN Table2
WHERE  (Tabel1.Colour! = Table2.colour)

错误讯息是 - multi-part identifier Tabel2.Colour could not be found

2 个答案:

答案 0 :(得分:0)

这适用于LEFT JOIN

SELECT Table2.Colour 
FROM Table2 
   LEFT JOIN Table1 ON Tabel1.Colour = Table2.colour
WHERE Table1.Colour IS NULL

您也可以使用NOT INNOT EXISTS,我更喜欢LEFT JOIN / IS NULL语法。

例如:

SELECT Colour 
FROM Table2 
WHERE Colour NOT IN (SELECT Colour FROM Table1)

答案 1 :(得分:0)

如果您的RDBMS版本实现了EXCEPT子句, 你可以做到以下几点:

SELECT Colour FROM Table2
EXCEPT 
SELECT Colour FROM Table1

我不是说这比JOIN好。只是另一种选择。