我是一位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