gpt4 book ai didi

mysql - 从选择中选择特定的行号

转载 作者:行者123 更新时间:2023-11-29 06:58:01 26 4
gpt4 key购买 nike

我是 MySQL 语法的初学者。所以有几个问题想请教一下。

我有一个线索数据库,用户可以在其中添加线索。并有一个选择一系列数字来执行随机函数的网络方法。 (为了游戏而随机,一遍又一遍地做同样的线索没有意义吧?)

但我现在的主要问题是如果作者决定添加更多线索怎么办?那么我的线索数据库将看起来像这样。

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

如果播放器选择loc1 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 爆炸并飞到一个非常快的速度。而且我担心这会导致内存管理问题/内存泄漏。

EDIT2:由于创建字段只是一个临时字段,而且似乎是唯一的选择,我尝试了这个 MySQL 命令。

set @rank=0;
select @rank:=@rank+1 AS rank, cId, clueDetails, location, author from tbl_clue where location = "loc" and author = "auth" order by rank ASC

它似乎显示了我想要的,但我的命令似乎与其他人通常给出的不同。 (更多支架和其他东西)。我的命令可以吗?会不会有什么间接的影响?

最佳答案

你可以试试这个。如果这有帮助,请添加评论:)

SELECT     cID, clueDetails, location, author
FROM
(
SELECT @rownum := @rownum + 1 as `RowNo`,
p.cID,
p.clueDetails,
p.location,
p.author
FROM (
SELECT cID, clueDetails, location, author
FROM myTableName
WHERE location = 'loc 1' AND author = 'auth 1'
) p , (SELECT @rownum:=0) r
) y
WHERE y.RowNo = 3
ORDER BY RowNo

关于mysql - 从选择中选择特定的行号,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11575309/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com