【发布时间】:2026-02-12 00:15:01
【问题描述】:
我有两个具有相同结构但没有唯一标识符的表。如何比较这两个表
我尝试使用行号来比较它们。代码如下
WITH source AS
(
SELECT
ROW_NUMBER() OVER(ORDER BY Customer Account address) AS RowN,
Customer Account address
FROM
old
)
WITH target AS
(
SELECT
ROW_NUMBER() OVER(ORDER BY Customer Account address) AS RowN,
Customer Account address
FROM
New
)
SELECT
s.address, t.address
FROM
source s
JOIN
traget t ON s.RowN = t.RowN
WHERE
s.Customer != t.Customer
OR s.Account != t.Account
OR s.address != t.address
结果除外:
s.address t.address
---------------------
BB1 BB2
但我得到一个错误
关键字“WITH”附近的语法不正确
Microsoft SQL Server 版本:Microsoft SQL Server 2017
【问题讨论】:
-
去掉第二个
WITH,开始定义CTE的时候只需要1个,然后用逗号分隔(也没有)。 -
如果你
ORDER BY是一个列的列表,你也需要用逗号分隔它们 -
Customer Account address也无效。事实上,以上内容充满了语法错误。 -
这里的逻辑是合理的,但是代码中充满了语法错误。
标签: sql sql-server comparison