我在SQL Server 2008 R2数据库中有两个表,我们称之为A和B.它们看起来像这样
A
--------------------
GUID Primary Key
B_GUID Foreign Key
Value nvarchar(50)
B
--------------------
GUID Primary Key
Value nvarchar(50)
我想从A
B
Value
不匹配
但是,我无法弄清楚SQL。有帮助吗? :)谢谢
答案 0 :(得分:5)
怎么样:
SELECT A.*
FROM dbo.A
INNER JOIN dbo.B ON A.B_GUID = B.GUID
WHERE
A.Value <> B.Value
INNER JOIN将这两个表放在一起,在这两个列的相等性上,WHERE子句将其进一步限制为仅适用于该条件的两行。
答案 1 :(得分:3)
select
A.*
from
A
join
B on A.B_GUID = B.GUID and A.Value <> B.Value
答案 2 :(得分:0)
SELECT *
FROM A
LEFT JOIN B
ON A.B_GUID = B.GUID WHERE A.Value <> B.Value;
这未经过测试但应该有效
答案 3 :(得分:0)
请注意,根据具体情况,上述答案可能存在缺陷:假设您有以下记录,即使由于其他无匹配记录而存在匹配记录,您会发现输出不匹配。
TABLE 1
GUID B_GUID VALUE
101 201 X
102 201 Y
TABLE2
GUID VALUE
201 Y
201 X
解决此问题的另一种方法是使用EXCEPT子句查询。