要从两个带否定的表中显示的查询
本文关键字:查询 显示 两个 | 更新日期: 2023-09-27 18:01:15
我有两个列表框,listbox1和listbox2,以及数据库中的两个表,table1和table2。这两个表都包含一个名为"color"的列。我想显示所有的'颜色'从table1在listbox1我能做到的。但是在listbox2中,我想从表2中显示"颜色",但它必须不存在于表1中的"颜色"。那么我如何为它写一个查询呢?
这是我一直在尝试的,但它不起作用:
SELECT Table2.Colour
FROM Table1 CROSS JOIN Table2
WHERE (Tabel1.Colour! = Table2.colour)
Error Message is - multi-part identifier Tabel2.Colour could not be found
这应该适用于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)
如果你的RDBMS版本实现了EXCEPT
子句,您可以执行以下操作:
SELECT Colour FROM Table2
EXCEPT
SELECT Colour FROM Table1
我并不是说这比JOIN更好。