我有两个列表框,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
答案 0 :(得分:0)
这适用于LEFT JOIN
:
SELECT Table2.Colour
FROM Table2
LEFT JOIN Table1 ON Tabel1.Colour = Table2.colour
WHERE Table1.Colour IS NULL
您也可以使用NOT IN
或NOT 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好。只是另一种选择。