2012-10-09 30 views
-3

如果有按照行号查询的方法吗?像:根据行号在MYSQL中查询

select rownumber from table; 

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

菜鸟回答:

我希望得到第二高的薪水。所以这就是我所做的:

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

这并不适用于第N高的薪水其第二高的唯一。而我对此也是新的,所以我只是想通过我自己的方法获得第二名。

+0

你的意思是“select table(*)from table?” – 1Mayur

+0

你究竟想要什么?你想按rownumber的递增或递减顺序查看记录?或者你会提供一个rownumber,你想获得该行? –

+1

ROW_NUMBER仅在Sql Server中可用,无法在MySql中使用 – Codesen

回答

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

要明白,这只是有用的获得一个随机行或添加排序依据。否则,您将永远无法确定将返回哪一行...

+0

为什么这会起作用?链接?说明? –

+0

@CraigRinger:真的,为什么这会工作?这只是一个普通的SQL查询。但是我会添加一个到MySQL SELECT手册的链接... – Nin

+0

让OP做一些他自己的研究是可以的。 –

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; 
+0

检查编辑的问题请 – Nil

+0

@ rd4code检查编辑的答案请 –

0
select * from table limit [offset,limit] 

偏移是要启动的行号,

限制是行数,您想从偏移量开始

so yo ü可以使用它像

select * from table limit rownumber,1 
0

有没有顺序没有行号,但如果你心里有那么

SELECT * FROM thing ORDER BY ordering LIMIT 1 OFFSET your_row; 
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