2015-06-22 198 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