【发布时间】:2018-11-18 19:22:48
【问题描述】:
我创建了以下查询:
SELECT DISTINCT
model,
substring_index(group_concat(id ORDER BY id DESC), ',', 1) AS newid,
substring_index(group_concat(mainimage ORDER BY id DESC), ',', 1) AS newmainimage
FROM `example-table`
GROUP BY model
ORDER BY newid DESC;
问题是这个查询对变量newid 进行排序,如下所示:99、9、87、121、11,而我想查看:121、99、87、11、9。
我认为答案是在ORDER BY CAST(newid AS UNSIGNED) DESC 中更改ORDER BY newid DESC 但这根本没有给我任何结果,所以显然我错了。我在这里错过了什么?
【问题讨论】:
-
您需要在ORDER BY inside GROUP_CONCAT 中使用CAST;您可能将 id 值存储为字符串,因此它们将始终使用字符串排序而无需此类强制转换。
-
你能分享一下表架构吗?
-
@Uueerdo 在 GROUP_CONCAT 函数中使用它不起作用,但你在路上帮助了我。我最终在 substring_index 函数周围使用了 CAST 函数,这可以解决问题:
cast(substring_index(group_concat(id ORDER BY id DESC), ',', 1) as unsigned) AS newid -
哦,我明白了,我有点忽略了 substring_index,因为 "99, 9 ..." 看起来像 group_concat 结果。