2012-10-09 104 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