在 MS SQL Server 中,我试图从包含空值的表中删除重复项。阙呻吟。很多很多NULL
s。底线是我需要保留一份带有或不带有NULL
s 的任何重复记录的副本。我基本上想在操作期间表现NULL
得像一个值为 " NULL
" 的普通记录,然后回到真正的NULL
. 这可能吗?有没有更简单的解决方案?
Table1
好像:
UID Data1 Data2
1 A NULL
2 A NULL
3 B abc
4 B abc
5 C NULL
6 D ghj
我希望该命令丢弃第 2 行和第 4 行并保留其余部分。(SELECT 用于测试。)
;SELECT UID, Data1, Data2
FROM Table1 AS T
WHERE NOT EXISTS (
SELECT 1
FROM table1 AS T2
WHERE
T2.Data1 = T.Data1
AND T2.Data2 = T.Data2
AND T2.UID >= T.UID
)
AND Data1 IS NOT NULL
注意:SELECT DISTINCT 将不起作用,因为重复项具有不同的时间戳。