知道为什么以下两个查询产生相同的结果?根据我所看到的所有参考文献,第一个甚至不应该工作,但确实如此。显然,如果它不是一个小故障,我更喜欢第一个,因为它是一个更简单,可能更快的查询。
SELECT *,MIN(ts) FROM tbl GROUP BY id;
SELECT *,ts FROM tbl a WHERE rowid IN
(SELECT rowid FROM tbl b WHERE a.id = b.id ORDER BY ts LIMIT 1);
以下是一些示例数据:
rowid id ts name
1 58 10 aaa
2 58 5 bbb
3 72 7 ccc
结果预期:
2 58 5 bbb 5
3 72 7 ccc 7
答案 0 :(得分:1)
这是有效的,因为一些不支持窗口函数的平台将此构造视为窗口函数 - 在SQL Server,Oracle和db2上你必须编写
min(ts) over(order by ts)
答案 1 :(得分:1)
自SQLite 3.7.11以来,这保证有效。
至于原因:一些付费客户想要它......