-3

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

select rownumber from table;

我正在尝试做的事情: 我已经使用子查询计算了表中的总行数,现在我只想显示最后一个。

菜鸟回答:

我想拿到第二高的薪水。所以这就是我所做的:

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

这不适用于第 N 高的薪水,它仅适用于第二高的薪水。我是新手,所以我只是想通过我自己的方法获得第二高。

4

5 回答 5

2

虽然我不确定您为什么要获得特定的 rownumer,但您可以这样做:

select * from table LIMIT rownumer, 1;

在http://dev.mysql.com/doc/refman/5.0/en/select.html上阅读更多信息

因此,如果您想要第三行,您将执行以下操作: SELECT * FROM table LIMIT 3,1;

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

请理解,这仅在获取随机行或添加 SORT BY 时有用。否则,您将永远无法确定将返回哪一行...

于 2012-10-09T10:29:47.873 回答
1

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

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;
于 2012-10-09T10:30:11.530 回答
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

看到这个 SQLFiddle

于 2012-10-09T10:34:50.420 回答
0
select * from table limit [offset,limit]

offset是您要开始的行号,

limit是您想要从偏移量开始的行数

所以你可以像使用它一样

select * from table limit rownumber,1
于 2012-10-09T10:31:50.157 回答
0

没有排序就没有行号,但是如果您确实有排序顺序,那么

SELECT * FROM thing ORDER BY ordering LIMIT 1 OFFSET your_row;
于 2012-10-09T10:31:58.607 回答