0

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

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

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

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

4

2 回答 2

0

这应该适用于LEFT JOIN

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

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

例如:

SELECT Colour 
FROM Table2 
WHERE Colour NOT IN (SELECT Colour FROM Table1)
于 2013-02-25T16:16:19.060 回答
0

如果您的 RDBMS 版本实现了EXCEPT子句,您可以执行以下操作:

SELECT Colour FROM Table2
EXCEPT 
SELECT Colour FROM Table1

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

于 2013-02-25T16:27:24.077 回答