gpt4 book ai didi

php - 如何使用限制和某种分数选择随机行?

转载 作者:行者123 更新时间:2023-11-29 05:50:48 24 4
gpt4 key购买 nike

我必须在有几行的地方进行 sql 查询。它仅在同一个表中。

结果(1 行或多行)必须是随机的,并且遵循从 0 到 ...(任何大数字,如 5000)的点系统。

例如,从这个数据转储中,我想随机选择 X 个名称并遵循这些点。

选择 3 行的结果可能是 ids:

10、6 和 4

或 6、10、4

如果是 4 行,结果将是:

10、6、4、9

6、10、4、9

CREATE TABLE `draw` (
`id` int(11) NOT NULL,
`name` varchar(50) NOT NULL,
`points` int(11) NOT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

INSERT INTO `draw` (`id`, `name`, `points`) VALUES (1, 'a', '65');
INSERT INTO `draw` (`id`, `name`, `points`) VALUES (2, 'b', '5000');
INSERT INTO `draw` (`id`, `name`, `points`) VALUES (3, 'c', '900');
INSERT INTO `draw` (`id`, `name`, `points`) VALUES (4, 'd', '10');
INSERT INTO `draw` (`id`, `name`, `points`) VALUES (5, 'e', '1000');
INSERT INTO `draw` (`id`, `name`, `points`) VALUES (6, 'f', '0');
INSERT INTO `draw` (`id`, `name`, `points`) VALUES (7, 'g', '650');
INSERT INTO `draw` (`id`, `name`, `points`) VALUES (8, 'h', '600');
INSERT INTO `draw` (`id`, `name`, `points`) VALUES (9, 'i', 30');
INSERT INTO `draw` (`id`, `name`, `points`) VALUES (10, 'j', '0');

最佳答案

您需要首先根据点SELECT 行,然后通过将其用作子查询以随机顺序从该结果中进行选择。如果多个用户具有相同的点数,为了确保我们不会总是选择同一个用户,我们还按 RAND() after points< 对子查询进行排序:

SELECT *
FROM (SELECT *
FROM draw
ORDER BY points, RAND()
LIMIT 4) d
ORDER BY RAND()

输出:

id  name    points
9 i 30
10 j 0
6 f 0
4 d 10

Demo on dbfiddle

关于php - 如何使用限制和某种分数选择随机行?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54545412/

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