2015-06-22 175 views
0

克服没有ORDER BY我有一个表t如下:SQL:在嵌套查询

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。这怎么能在一个查询中完成?

+0

@ughai。 。 。这返回两行,但不一定是两个日期。 –

回答

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; 
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