首页 > 解决方案 > SQL Server:删除可交换列中的重复项

问题描述

我有这个查询:

select 
    OSFES97.CodeId, OSFBA97.CodeId, OSFES97.ReceiveDate
from 
    StockArchives OSFES97 
inner join 
    StockArchives OSFBA97 on OSFBA97.ReceiveDate = OSFES97.ReceiveDate
where 
    OSFES97.CodeId <> OSFBA97.CodeId 

它返回如下结果:

CodeId    CodeId    ReceiveDate
------------------------------------------
1         2         2019-01-13 15:55:20.537
2         1         2019-01-13 15:55:20.537
1         2         2019-01-13 15:55:30.537
2         1         2019-01-13 15:55:30.537

由于我使用的以下记录被认为是重复的(如果它们具有相同ReceiveDate的 ),我想删除其中一个,并实现此结果:

CodeId    CodeId    ReceiveDate
------------------------------------------
1         2         2019-01-13 15:55:20.537
1         2         2019-01-13 15:55:30.537

标签: sqlsql-serverjoinselect

解决方案


使用<>运算符将​​创建这些(逻辑)重复项。相反,您可以决定您希望哪一列具有较低的 ID 并相应地使用<或使用>。例如:

SELECT     OSFES97.CodeId, OSFBA97.CodeId, OSFES97.ReceiveDate
FROM       StockArchives OSFES97
INNER JOIN StockArchives OSFBA97 ON OSFBA97.ReceiveDate = OSFES97.ReceiveDate
WHERE       OSFES97.CodeId < OSFBA97.CodeId 
-- Here -------------------^

推荐阅读