Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/sql-server-2005/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql server 2005 sql集合操作和where子句_Sql Server 2005_Tsql - Fatal编程技术网

Sql server 2005 sql集合操作和where子句

Sql server 2005 sql集合操作和where子句,sql-server-2005,tsql,Sql Server 2005,Tsql,有可能有这样的查询吗?我得到一个错误: SELECT ColumnA FROM Table1 EXCEPT SELECT ColumnB FROM Table2 WHERE Table1.ColumnC = Table2.ColumnC SQL无法在my where子句中绑定Table1.colmnC。 有没有办法运行此查询?还是用另一种方法得到同样的结果? 我知道我可以使用临时表或。。。但是我想用一个集合运算 谢谢乍一看: SELECT ColumnA FROM Table1 WHERE

有可能有这样的查询吗?我得到一个错误:

SELECT ColumnA FROM Table1
EXCEPT
SELECT ColumnB FROM Table2
WHERE Table1.ColumnC = Table2.ColumnC
SQL无法在my where子句中绑定Table1.colmnC。 有没有办法运行此查询?还是用另一种方法得到同样的结果? 我知道我可以使用临时表或。。。但是我想用一个集合运算

谢谢

乍一看:

SELECT ColumnA FROM Table1
WHERE
    NOT EXISTS (SELECT * FROM Table2 WHERE Table1.ColumnC = Table2.ColumnC)
但是,我认为您希望从columnA值中排除列B值,其中columnC与columnA和B匹配:

SELECT ColumnA FROM Table1
WHERE
   NOT EXISTS (
      SELECT * FROM Table2
      WHERE Table1.ColumnC = Table2.ColumnC AND Table1.ColumnA = Table2.ColumnB)
你正在做的是

(SELECT ColumnA FROM Table1)
EXECPT 
(SELECT ColumnB FROM Table2
 WHERE Table1.ColumnC = Table2.ColumnC)
括号显示了它不起作用的原因

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

表1中列A中的所有内容都在表2.ColumnB中没有列A,而表1.ColumnC等于表2.ColumnC吗

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

为了修复查询的错误,如果ColumnA和ColumnB的数据类型相同,则应该可以正常运行以下命令

除了比较结果集。没有在某个列上连接结果集的概念

SELECT ColumnA FROM Table1
EXCEPT
SELECT ColumnB FROM Table2