SQL:在嵌套查询
问题描述:
克服没有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
我要选择对的a
和b
所有值表中两个最新日期。
我想要做的东西像下面这样:
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
。这怎么能在一个查询中完成?
答
使用join
代替:
SELECT a, b
FROM t JOIN
(SELECT DISTINCT date FROM t ORDER BY date DESC LIMIT 2) tt
on t.date = tt.date;
答
尝试此查询
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
@ughai。 。 。这返回两行,但不一定是两个日期。 –