gpt4 book ai didi

mysql - GROUP_CONCAT 按整数排序,而不是字符串

转载 作者:行者123 更新时间:2023-11-29 12:46:54 25 4
gpt4 key购买 nike

是否可以将 group_concat 中的元素作为整数值而不是字符串值进行排序?

排序结果为1,11,12,3,5,6..
我需要 1,3,5,6,11,12...

我尝试使用 Actor ,但 des 不起作用:

GROUP_CONCAT( .. 
ORDER BY
IF(attribute_value_order="order",
CAST(value_order AS SIGNED),
value_name)
ASC SEPARATOR "|" ) as value

最佳答案

刚刚运行测试:

表格:

CREATE TABLE IF NOT EXISTS `gc` (
`ord` int(11) NOT NULL,
`group` int(11) NOT NULL
) ENGINE=InnoDB DEFAULT CHARSET=latin1;

INSERT INTO `gc` (`ord`, `gr`) VALUES
(1, 0), (2, 0), (1, 0), (2, 0), (11, 0), (12, 0), (3, 0), (5, 0),
(1, 1), (2, 1), (1, 1), (2, 1), (11, 1), (12, 1), (3, 1), (5, 1);

我跑了SELECT GROUP_CONCAT(ord ORDER BY ord) FROM gc GROUP BY gr结果就是你想要的:

1,1,2,2,3,5,11,12

但是如果您使用 VARCHAR 来表示 ord列,完全相同的查询的结果是

1,1,11,12,2,2,3,5

但是查询SELECT GROUP_CONCAT(ord ORDER BY CAST(ord AS SIGNED)) FROM gc GROUP BY gr再次返回

1,1,2,2,3,5,11,12

我使用 MySQL 5.6.11 对此进行了测试

更新

您无法更改 ORDER BY GROUP_CONCAT 中的条款与 IF ,但您可以更改整个 GROUP_CONCAT对于不同的群体,写 IFGROUP_CONCAT前面

SELECT 
gr,
IF(gr = 0,
GROUP_CONCAT(ord ORDER BY CAST(ord AS SIGNED)),
GROUP_CONCAT(ord ORDER BY ord ) ) AS res
FROM gc
GROUP BY gr

结果

gr  res     
0 1,1,2,2,3,5,11,12
1 1,1,11,12,2,2,3,5

关于mysql - GROUP_CONCAT 按整数排序,而不是字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25303968/

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