根据行号查询MYSQL

时间:2012-10-09 10:28:19

标签: mysql database

如果有办法根据行号查询?像:

select rownumber from table;

我想做什么: 我使用子查询计算了表中的总行数,现在我想只显示最后一行。

菜鸟回答:

我想获得第二高薪。所以这就是我所做的:

select * from gg where salary< (select max(salary) from gg) order by salary desc limit 1

这对第N个最高薪水不起作用,仅为第二高。我很新,所以我只想按自己的方法获得第二名。

5 个答案:

答案 0 :(得分:2)

虽然我不确定你为什么想要一个特定的rownumer,你可以这样做:

select * from table LIMIT rownumer, 1;

http://dev.mysql.com/doc/refman/5.0/en/select.html

上详细了解详情

所以,如果你想要第3行,你会做: SELECT * FROM table LIMIT 3,1;

如果您想使用第6至第16行,您将使用: SELECT * FROM table LIMIT 6,10

请注意,这仅对获取随机行或添加SORT BY有用。否则你将无法确定将返回哪一行......

答案 1 :(得分:1)

如果您只想限制查询只返回特定数量的行,则可以使用内置LIMIT row_count OFFSET offset子句的Mysql。但是,如果要选择排名编号,请使用:

SET @rownum = 0; 
Select *
FROM
(
   Select *,  (@rownum := @rownum+1) as rank
   FROM t
) sub 

更新:如果你想

  

我想只显示最后一个。

然后你可以这样做:

  SELECT *
  FROM Yourquery
  ORDER BY SomeField DESC --This how you determine the last one based on the order
  LIMIT 1;

答案 2 :(得分:1)

如果要选择带行号的记录,请参阅:

SELECT (@rank := @rank + 1) AS row_number
        ,contract_id, price1, price2, price3
      FROM t1, (SELECT @rank := 0) tmp;

如果您只想要行号,请看:

SELECT (@rank := @rank + 1) AS row_number
      FROM t1, (SELECT @rank := 0) tmp

See this SQLFiddle

答案 3 :(得分:0)

select * from table limit [offset,limit]

偏移是您要开始的行号,

limit 是您希望从偏移量

开始的行数

所以你可以像

一样使用它
select * from table limit rownumber,1

答案 4 :(得分:0)

没有订购没有行号,但是如果你确实有排序顺序那么

SELECT * FROM thing ORDER BY ordering LIMIT 1 OFFSET your_row;