SQL:在嵌套查询中克服没有ORDER BY

时间:2015-06-22 11:25:24

标签: sql sqlite

我有一张表t,如下所示:

CREATE TABLE t(
    id      INTEGER PRIMARY KEY AUTOINCREMENT,
    date    TEXT,
    a       TEXT,
    b       TEXT
);

示例数据

1|2015-06-15|a1 15|b1 15
2|2015-06-15|a2 15|b2 15
3|2015-06-16|a1 16|b1 16
4|2015-06-16|a2 16|b2 16
5|2015-06-17|a1 17|b1 17
6|2015-06-17|a2 17|b2 17

我想为表格中的两个最新日期选择ab的所有值。

我想做以下事情:

SELECT a,b FROM t WHERE date IN (SELECT DISTINCT date FROM t ORDER BY date DESC LIMIT 2);

预期输出

a1 17|b1 17
a2 17|b2 17

但您在嵌套查询中不允许ORDER BY。如何在单个查询中完成此操作?

2 个答案:

答案 0 :(得分:2)

改为使用join

SELECT a, b
FROM t JOIN
     (SELECT DISTINCT date FROM t ORDER BY date DESC LIMIT 2) tt
     on t.date = tt.date;

答案 1 :(得分:0)

尝试此查询

SELECT t.a,t.b FROM t 
join(SELECT DISTINCT date FROM t ORDER BY date DESC LIMIT 2) q
on t.date=q.date