我有这样的预订表
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/