2016-11-04 67 views
0

我不是MySQL專家,也不確定如何使用MySQL解決此問題。MySQL在選擇項上獲得項目編號

我的表是這樣的:

mysql> describe items; 
    +-------------+---------------------+------+-----+---------+----------------+ 
    | Field  | Type    | Null | Key | Default | Extra   | 
    +-------------+---------------------+------+-----+---------+----------------+ 
    | itemID  | bigint(20) unsigned | NO | PRI | NULL | auto_increment | 
    | date  | timestamp   | NO |  |   |    |    | 
    +-------------+---------------------+------+-----+---------+----------------+ 

而且我想獲得一個項目的位置,如果我會做出選擇和排序(或過濾器)。例如,我按日期排序,並且itemID = 79的項目將是索引爲126的項目,如果我將製作循環。所以我想直接從數據庫中獲得這個數字126。這可能類似於排名,但我不確定,但我不確定是否有可能。

+0

你想獲得項目上'指數= 126'或知道什麼指數'ITEMID = 79' –

+0

的項目Id = 79 –

回答

1
SELECT itemID, date 
FROM (
      SELECT itemID, date, @rn:= @rn +1 as rank 
      FROM items, (SELECT @rn := 0) as para 
      ORDER BY date 
    ) T 
WHERE rank = 126 

OR

SELECT itemID, date, rank 
FROM (
      SELECT itemID, date, @rn:= @rn +1 as rank 
      FROM items, (SELECT @rn := 0) as para 
      ORDER BY date 
    ) T 
WHERE itemID = 79 
+0

指數我有一個錯誤「#1248 - 每個派生表都必須有自己的別名「 –

+0

忘記了參數 –

+0

的別名它的工作原理,謝謝。您能否將WHERE語句添加到示例中?例如,其中itemID> 500。 –