MySQL:查询仅返回行偏移量

时间:2012-02-29 14:54:16

标签: mysql

给出一个表

 field1  |  field2

 abc     |  1
 efg     |  30
 etc     |  10

我想运行SELECT offset() FROM table WHERE field1 = 'etc' ORDER BY field2 DESC

之类的查询

这样一个虚构的查询应该返回2(按field2 desc排序,field1 = etc是第二行)

有什么干净的方法吗?

由于

3 个答案:

答案 0 :(得分:1)

这样的事情怎么样?

SELECT COUNT(*) FROM table outer 
WHERE field1 != 'etc' 
AND field2 <= (SELECT MAX(inner.field2) 
  FROM table inner 
  WHERE inner.field1 = outer.field1)

答案 1 :(得分:1)

如果你的意思是行偏移:使用order by field2 DESC field1 = 'etc'对结果进行排序后排的排名,那么你可以这样做:

SET @rowRank = 0; 
SELECT Sub.rowRank
FROM
(
    SELECT *, (@rowRank := @rowRank + 1) as rowRank
    FROM TableName
    ORDER BY field2 DESC
) AS Sub
WHERE Sub.field1 = 'etc'

这应该返回2.

答案 2 :(得分:0)

select count(*) 
from table 
where field2 > {field2 of the row to search the offset for, in this case, 10};