sql - 从 SQL 表中删除重复的行

标签 sql sqlite

我有这样的预订表

place      day       name1     floor1    name2     floor2
---------  --------  --------- --------- --------- ---------
Anaheim    Monday    Sean      3rd       Jenny     2nd
Anaheim    Monday    Jenny     2nd       Sean      3rd
Cerritos   Saturday  Dennis    4th       Sean      3rd

如您所见,第一行和第二行只是以不同的顺序重复。
我想要一个像这样的决赛 table
place      day       name1     floor1    name2     floor2
---------  --------  --------- --------- --------- ---------
Anaheim    Monday    Sean      3rd       Jenny     2nd
Cerritos   Saturday  Dennis    4th       Sean      3rd

我在想这样的事情
SELECT t1.place, t1.day, t1.name1, t1.floor, t1.name2, t1.floor2
FROM table t1, table t2
WHERE NOT (t1.place = t2.place AND t1.day = t2.day AND
           t1.name1 = t2.name2 AND t1.floor1 = t1.floor2);

但这不起作用:(也许我的理解太短了..

我应该如何处理这个?

编辑 :
好的,我应该提到这一点,但我正在寻找一个一般的想法,而不是这个表特定的。

可能有一张像
place      day       name1     floor1    section1   name2    floor2    section2
---------  --------  --------- --------- --------- --------- --------- -----------
Anaheim    Monday    Sean      HR        12         Jenny     QA       24
Anaheim    Monday    Jenny     QA        24         Sean      HR       12
Cerritos   Saturday  Dennis    Main      31         Sean      HR       12

在这种情况下,我不能使用任何“排序”和删除机制..

但是,感谢大家为解决这个问题所做的努力!

最佳答案

使用聪明的GROUP BY :

SELECT t1.place, t1.day, t1.name1, t1.floor, t1.name2, t1.floor2
FROM table t1
INNER JOIN
(
    SELECT t1.place, t1.day, MAX(t1.floor, t1.floor2) AS floor1,
        MIN(t1.floor, t1.floor2) AS floor2
    FROM table t1, table t2
    GROUP BY t1.place, t1.day, MAX(t1.floor, t1.floor2),
        MIN(t1.floor, t1.floor2)
) t2
ON t1.place = t2.place AND t1.day = t2.day AND t1.floor = t2.floor1 AND
    t1.floor2 = t2.floor2

关于sql - 从 SQL 表中删除重复的行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35123384/

相关文章:

mysql - SQL 查询 - 使用不同类型过滤

Android:如何获取列表项包含的所有数据?

sqlite - 使用sqlite中另一个表的约束创建表?

c++ - Qt:QSqlRelationalTableModel 引用不存在的外键

ios - 移动应用程序数据管理

java - 如何通过 hibernate 将空字符串传递给日期类型的列

JAVA 如何读取 SQL 并添加到对象数组中

SQL Server 选择不同

java - 运行 M :N query in hibernate? 的最佳方式

java - 从 Android SQLite 数据库获取最大唯一 ID 不起作用