sql - 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
解决方案
使用<>
运算符将创建这些(逻辑)重复项。相反,您可以决定您希望哪一列具有较低的 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 -------------------^
推荐阅读
- c# - C# Selenium 关闭随机出现的灯箱
- sonarqube - 构建配置为运行 SonarQube 分析,但无法找到 SonarQube 分析目标
- c++ - C++ - 在 C++ 类中初始化私有数组
- java - 使用wiremock作为https代理时出现ClientHandlerException
- azure - 如何捕获 Alexa 控制台发送到端点的内容?
- android - Android 9 Pie 中的拖放崩溃
- python - 如何更有效地编写辅助函数的代码?
- javascript - jQuery - 多次点击事件
- c - 带有 ** 指向另一个结构的指针的 Realloc 结构
- php - EntityType Symfony 表单的 CollectionType