我正在尝试选择x = 5的行,但x会不断变化。所以我有这样一张桌子:
id x
---- ---
1 5
2 6
3 4
4 5
5 5
所以我想执行"SELECT * FROM table WHERE x=5 AND _???_;"
这样的查询,以便返回第4行和第4行。 5但不第1行。
换句话说,我想获得最近x具有此值的行。我希望我清楚自己。谢谢!
编辑: x获得最后一个值后的条目数。我的意思是桌子也可以是这样的:
id x
---- ---
1 5
2 6
3 4
4 5
5 1
6 5
7 5
... 5
100 5
101 5
在这种情况下,它应该返回行[6-101]。
答案 0 :(得分:2)
以下将获得最近的行
SELECT * FROM table WHERE x=5 ORDER BY id DESC LIMIT 0,1
答案 1 :(得分:1)
select * from t t1
where
x=(select x from t order by id desc limit 1)
and
not exists
(select x from t where id>t1.id and x<>t1.x)
select * from t t1
where
x=(select x from t order by id desc limit 1)
and
id>=
(select max(id) from t
where x<>
(select x from t order by id desc limit 1)
)
选择基础上更快的内容。