【问题标题】:sql distinct duplicates cross valuessql distinct重复交叉值
【发布时间】:2018-11-25 08:43:09
【问题描述】:
我正在尝试整理数据库以删除重复项。
假设我有一个看起来像这样的数据库
Date | Value1 | Value2
01/01/2018 A B
01/01/2018 B A
02/01/2018 A B
在这种情况下,根据我的需要,前两行是相同的,所以我想删除一个(假设是第二行)。如果我使用 SELECT DISTINCT 它不会放弃它,因为它们实际上是不同的。
有没有简单的程序可以做到这一点?
谢谢
【问题讨论】:
标签:
sql
sqlite
duplicates
distinct
【解决方案1】:
您可以使用exists 运算符来查找(并删除!)它们:
DELETE FROM mytable a
WHERE EXISTS (SELECT *
FROM mytable b
WHERE a.value1 = b.value2 AND
a.value2 = b.value1 AND
a.value1 < b.value1)
【解决方案2】:
这是一种可能性:
create table t(date,value1,value2);
insert into t values
('01/01/2018','A','B'),
('01/01/2018','B','A'),
('02/01/2018','A','B');
select distinct date,min(value1,value2) value1,max(value1,value2) value2 from t;