gpt4 book ai didi

mysql - GROUP_CONCAT 但限制获得多于一行

转载 作者:行者123 更新时间:2023-11-29 03:39:26 27 4
gpt4 key购买 nike

我正在为我管理的 PtokaX DC 集线器上的用户开发一个小的拼字游戏。为此,我将单词列表存储在 MySQL 表中。表架构如下:

CREATE TABLE `jumblewords` (
`id` INT(10) UNSIGNED NOT NULL AUTO_INCREMENT,
`word` CHAR(15) NOT NULL,
PRIMARY KEY (`id`),
UNIQUE INDEX `word` (`word`)
)
COMMENT='List of words to be used for jumble game.'
COLLATE='utf8_general_ci'
ENGINE=MyISAM;

现在,在游戏引擎中;我想随机获取 20 个单词作为字符串。我可以通过类似这样的查询来实现:

SELECT GROUP_CONCAT(f.word SEPARATOR ', ' )
FROM ( SELECT j.word AS word
FROM jumblewords j
ORDER BY RAND()
LIMIT 20) f

但每次列表过期时我都必须执行此语句(所有 20 个单词都已放在用户之前)。

我可以修改这个查询,以便我可以使用上面的查询生成的结果获取多行吗?

最佳答案

可能解决此问题的更简单方法是将随机单词存储在临时表中,然后提取值。存储过程将是完美的选择。

DELIMITER //
DROP PROCEDURE IF EXISTS sp_jumblewords //
CREATE PROCEDURE sp_jumblewords(no_lines INT)
BEGIN

DROP TABLE IF EXISTS tmp_jumblewords;
CREATE TEMPORARY TABLE tmp_jumblewords (
`word` VARCHAR(340) NOT NULL);

REPEAT
INSERT INTO tmp_jumblewords
SELECT GROUP_CONCAT(f.word SEPARATOR ', ' )
FROM ( SELECT j.word AS word
FROM jumblewords j
ORDER BY RAND()
LIMIT 20) f;

SET no_lines = no_lines - 1;
UNTIL no_lines = 0
END REPEAT;

SELECT * FROM tmp_jumblewords;

END //
DELIMITER ;

CALL sp_jumblewords(20);

关于mysql - GROUP_CONCAT 但限制获得多于一行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16249158/

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