我是一位MySQL語法的初學者。所以我想問一些問題。從選擇中選擇特定的行號
我收到了一個線索DB,用戶可以在這裏添加線索。並有一個webmethod選擇一個數字範圍做隨機功能。 (隨機爲了遊戲的緣故,沒有一點重複做同樣的線索吧?)
但是我現在的主要問題是,如果作者決定添加更多的線索怎麼辦? 然後我的線索數據庫將看起來像這樣。
+--------+-------------+-----------+--------+
| cID | clueDetails | location | author |
+--------+-------------+-----------+--------+
| 1 | abcde | loc 1 | auth 1 |
| 2 | efghi | loc 1 | auth 1 |
| 3 | jklmno | loc 2 | auth 1 |
| 4 | pqrstu | loc 2 | auth 1 |
| 5 | vwxyz | loc 1 | auth 1 |
+--------+-------------+-----------+--------+
如果玩家選擇,它會呈現出cID 1,2 and 5
。所以我不能有效地使用我的隨機函數,因爲它選擇loc和auth的第一個和最後一個,而3和4不適合。我現在知道,由於信息稀缺,所以它非常模糊。爲了真正瞭解整個過程,我們可以直接看到遊戲以及我擁有的方法/功能。 (這將是非常長的)
切割到追逐,我的結果將如下所示,識別它的方式將通過cID,但在線索按不同順序添加(如圖所示上面),那麼我的功能會變得相當麻煩。
編輯:假設這個隨機函數給我回2條線索,因爲我想玩2條線索。這個隨機函數給我回1和表3的結果所以下面,1和3會給我CID1和CID5因爲他們是行號1和3(抱歉造成的混亂)
+--------+-------------+-----------+--------+
| cID | clueDetails | location | author |
+--------+-------------+-----------+--------+
| 1 | abcde | loc 1 | auth 1 |
| 2 | efghi | loc 1 | auth 1 |
| 5 | vwxyz | loc 1 | auth 1 |
+--------+-------------+-----------+--------+
所以那麼,我想問一下,我們是否可以按照它的編號選擇行?例如row[3] = cID 5, vwxyz, loc 1, auth 1
。
就我而言,我已經做了大量的研究,並且在MySQL中似乎沒有任何功能允許我們按行號進行選擇。 (雖然所有的文章都相當老舊,2010年和之前,不知道MySQL是否添加了任何新功能)
我看到一個SO線程 - MySQL - Get row number on select並從我如何看它,它似乎是生成一個字段稱爲排名。
我想知道的是,這個字段是ranking
溫度還是永久性的?因爲如果它只是一個臨時字段,那麼我可以將標識符從cID轉移到此編號。
或者你們有沒有任何建議可以解決這個問題?我想清除數據庫,並重新創建數據庫,但這將花費太多時間。隨着時間的推移,數據庫變大了,它也會變慢。另一種方法是創建一個數據表來填充loc =?loc和auth =?auth的所有當前線索,並用新線索(最新)添加它們,但是我認爲這會導致cID繁榮和飛行速度非常快。我擔心這會導致內存管理問題/內存泄漏。
編輯2:由於創建字段只是一個臨時字段,而且似乎是唯一的選擇,所以我嘗試了這個MySQL命令。
set @rank=0;
select @rank:[email protected]+1 AS rank, cId, clueDetails, location, author from tbl_clue where location = "loc" and author = "auth" order by rank ASC
它似乎顯示我想要的,但我的命令似乎不同於其他通常給予的。 (更多支架和其他東西)。我的命令行嗎?會有什麼間接影響呢?
請點擊這裏:http://stackoverflow.com/questions/1895110/row-number-in-mysql。 SQL中的函數是Row_Number(),所以你可以使用它來搜索一個mySQL的等價物(它不作爲標準函數存在) – WraithNath 2012-07-20 08:12:54
這是一個temp值,它的值動態變化 – Madhivanan 2012-07-20 08:13:47
@WithithNath - 是的,我也看到了,其中一個答案讓我想到了第二種方法。 – 2012-07-20 08:42:16