是否可能有这样的查询(我收到错误):
SELECT ColumnA FROM Table1
EXCEPT
SELECT ColumnB FROM Table2
WHERE Table1.ColumnC = Table2.ColumnC
SQL无法在where子句中绑定Table1.colmnC。 有没有办法运行此查询?或者另一种获得相同结果的方法? 我知道我可以使用临时表或者......但是我想用set操作来完成它。
感谢
答案 0 :(得分:1)
SELECT ColumnA FROM Table1
WHERE
NOT EXISTS (SELECT * FROM Table2 WHERE Table1.ColumnC = Table2.ColumnC)
但是,我认为你想要从columnA值中排除B列值,其中columnC匹配columnsA和B:
SELECT ColumnA FROM Table1
WHERE
NOT EXISTS (
SELECT * FROM Table2
WHERE Table1.ColumnC = Table2.ColumnC AND Table1.ColumnA = Table2.ColumnB)
答案 1 :(得分:0)
你在做什么
(SELECT ColumnA FROM Table1)
EXECPT
(SELECT ColumnB FROM Table2
WHERE Table1.ColumnC = Table2.ColumnC)
括号显示为什么它不起作用。
我对你想要达到的目标感到有些困惑。
TableA中ColumnA的所有内容都是TableA,其中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)
答案 2 :(得分:0)
要修复查询错误,如果ColumnA和ColumnB的数据类型相同,则以下内容应运行正常。
SELECT ColumnA FROM Table1
EXCEPT
SELECT ColumnB FROM Table2
Except
比较结果集。没有关于在某些列上连接结果集的概念。