如何只选择满足条件的最后一行?

时间:2013-02-18 12:12:19

标签: mysql select

我正在尝试选择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]。

2 个答案:

答案 0 :(得分:2)

以下将获得最近的行

SELECT * FROM table WHERE x=5 ORDER BY id DESC LIMIT 0,1

答案 1 :(得分:1)

SQLFiddle demo

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)

SQLFiddle demo

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

选择基础上更快的内容。