gpt4 book ai didi

mysql - 如何通过 Alpha 集(a-z,a-z,a-z ...)制作简单的 MySQL Order

转载 作者:行者123 更新时间:2023-11-30 22:31:04 30 4
gpt4 key购买 nike

我已经编写了一个 child 文字游戏,现在我正在尝试优化性能。游戏以一种特殊的方式从数据库中挑选关键词,我想做得更好。

给定一个按字母数字排序的 MySQL 关键字字段:

keyword     sorting position

apple 1
apricot 2
avocado 3
banana 4
broccoli 5
carrot 6
cherry 7
coconut 8
grape 9

是否有可能(在一个简单的 MySQL 查询中)将它们按连续的字母数字组排序,以便每个组都有首字母与组中其他字母不同的关键字?预期的结果是这样的:

keywords      group alpha sorting position

apple 1
banana 2
carrot 3
grape 4
apricot 1
broccoli 2
cherry 3
avocado 1
coconut 2

我通过编程迭代实现了这一点。我想知道这是否可以在一个简单的 MySQL 查询中完成。

最佳答案

您可以使用变量:

SELECT keyword
FROM (
SELECT keyword,
@rn := @rn + 1 AS rn,
@grp_rn := IF (@grp = LEFT(keyword, 1), @grp_rn + 1,
IF (@grp := LEFT(keyword, 1), 1, 1)) AS grp_rn
FROM mytable
CROSS JOIN (SELECT @rn := 0, @grp_rn := 0, @grp := '') AS var
ORDER BY keyword) AS t
ORDER BY grp_rn, rn

@rn 简单地按照 keyword 升序枚举表记录。 @grp_rn 枚举属于同一 LEFT(keyword, 1)(即 keyword)切片的记录。

要更好地理解如何使用 ORDER BY grp_rn, rn 进行排序,您可以查看子查询返回的内容:

keyword,  rn, grp_rn
====================
apple, 1, 1
apricot, 2, 2
avocado, 3, 3
banana, 4, 1
broccoli, 5, 2
carrot, 6, 1
cherry, 7, 2
coconut, 8, 3
grape, 9, 1

Demo here

关于mysql - 如何通过 Alpha 集(a-z,a-z,a-z ...)制作简单的 MySQL Order,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33895379/

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