我有一个看起来像这样的表:
**A B C D E**
1 2 3 4 5
2 3 3 3 3
3 4 5 6 7
4 5 5 5 5
我还有另一个看起来像这样的表:
**F G H I J**
1 4 7 8 6
2 3 4 5 6
5 1 5 7 8
7 1 5 5 5
我将第一个表称为Table1,将第二个表称为Table2。
我目前正在做的是:
Select
ts.B
from Table1 ts, Table2 tt
WHERE ts.A = tt.F
and NOT IN (Select tt.F from tt)
因此,基本上,我要加入Table1的A和Table2的F。我发现不在A中但不在F中的值。然后我想返回与那些A值相对应的B值。 / p>
我遇到错误:
Incorrect syntax near the keyword 'IN'.
我该如何解决?
答案 0 :(得分:2)
像这样尝试...
SELECT
t1.B
FROM
dbo.Table1 t1
WHERE
NOT EXISTS (
SELECT 1
FROM dbo.Table2 t2
WHERE t1.A = t2.F
)
答案 1 :(得分:1)
您可以简单地执行以下操作:
SELECT ts.B
FROM table1 ts
LEFT JOIN table2 tt ON ts.A = tt.F
WHERE ts.A IS NULL;
答案 2 :(得分:0)
Select
ts.B
from Table1 ts, Table2 tt
WHERE ts.A = tt.F
and NOT IN (Select tt.F from tt)
在上面的查询中
不参加 条款已被使用,但未包括表中的结果列。
ColumnName NOT IN (Select tt.F from tt)
您可以使用Left / Right外部连接子句,并在where子句的相应列中检查NULL值。
答案 3 :(得分:0)
出于记录,您的查询在这里是错误的:
WHERE ts.A = tt.F
and NOT IN (Select tt.F from tt)
您已经提到ts.A
的事实并不意味着解析器“记住”它。当涉及到and NOT IN
时,它不知道哪件事不应该进入。至少,正确的方法是:
WHERE ts.A = tt.F
and ts.A NOT IN (Select tt.F from tt)