要从两个带否定的表中显示的查询

本文关键字:查询 显示 两个 | 更新日期: 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 INNOT 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更好。