我有一张这样的表:
T A B C ID
2015-07-19 a b c 1
2015-07-16 a y z 2
2015-07-21 a b c 1
2015-07-17 a y c 2
2015-07-18 a y c 1
2015-07-20 a b c 1
2015-07-17 a y c 1
2015-07-19 a b c 2
2015-07-16 a y z 1
2015-07-20 a b c 2
2015-07-15 a y z 1
2015-07-22 x b c 1
2015-07-21 a b c 2
2015-07-18 a y c 2
2015-07-15 a y z 2
2015-07-22 a y c 2
2015-07-14 x b c 1
我需要通过datetime列T得到一个有序的结果,但我需要查询检测并避免A,B和C列中重复的行。所有这些都按ID排序和分隔。
它可能是一个存储过程。快速起来很重要,因为这是一个巨大的日志表。有数百万行。
结果应该是这样的:
T A B C ID
2015-07-22 x b c 1
2015-07-19 a b c 1
2015-07-17 a y c 1
2015-07-15 a y z 1
2015-07-14 x b c 1
2015-07-22 a y c 2
2015-07-19 a b c 2
2015-07-17 a y c 2
2015-07-15 a y z 2
有什么想法吗?
答案 0 :(得分:1)
尝试此查询:
{{1}}
答案 1 :(得分:1)
此查询提供预期结果(已测试):
SELECT t1.* FROM mytable t1
LEFT JOIN mytable t2 ON t1.t = t2.t + INTERVAL 1 DAY AND t1.A = t2.A AND t1.B = t2.B AND t1.C = t2.C AND t1.ID = t2.ID
WHERE t2.T IS NULL
ORDER BY t1.ID, t1.T DESC
答案 2 :(得分:0)
尝试此查询:
SELECT * FROM table GROUP BY A,B,C,T ORDER BY ID, T
编辑:将T添加到分组