2010-07-16 61 views
0

是否有可能有这样的查询(我收到提示):SQL设置操作和where子句

SELECT ColumnA FROM Table1 
EXCEPT 
SELECT ColumnB FROM Table2 
WHERE Table1.ColumnC = Table2.ColumnC 

SQL不能绑定Table1.colmnC在我的where子句。 有没有什么办法可以运行这个查询?或另一种方式来获得相同的结果? 我知道我可以使用临时表或...但我想用set操作来做到这一点。

感谢

回答

1

乍一看:

SELECT ColumnA FROM Table1 
WHERE 
    NOT EXISTS (SELECT * FROM Table2 WHERE Table1.ColumnC = Table2.ColumnC) 

不过,我认为这是这一点,你想从columnA值,其中columnC匹配columnsA和B排除B列的值:

SELECT ColumnA FROM Table1 
WHERE 
    NOT EXISTS (
     SELECT * FROM Table2 
     WHERE Table1.ColumnC = Table2.ColumnC AND Table1.ColumnA = Table2.ColumnB) 
0

您在做什么是

(SELECT ColumnA FROM Table1) 
EXECPT 
(SELECT ColumnB FROM Table2 
WHERE Table1.ColumnC = Table2.ColumnC) 

括号显示为什么它不起作用。

我对你想要达到的目标有些困惑。

它是TableA中ColumnA的所有内容,其中ColumnA不在Table2.ColumnB中,Table1.ColumnC等于Table2.ColumnC?

SELECT ColumnA FROM Table 
WHERE EXISTS (SELECT * FROM Table2 
       WHERE Table1.ColumnC = Table2.ColumnC 
       AND Table1.ColumnA <> Table2.ColumnB) 
0

要刚修好您所查询的错误,如果以下和ColumnA的ColumnB数据类型相同应该运行正常。

SELECT ColumnA FROM Table1 
EXCEPT 
SELECT ColumnB FROM Table2 

Except比较结果集。没有关于在某列上加入结果集的概念。