【发布时间】:2020-09-30 04:52:39
【问题描述】:
我已经为此烦恼了 2 个小时,我认为这很简单。我有一个带有 varchar 值(task_group)和一个 int 值(task_group_weight)的表。我希望表格先按 task_group 排序,然后按 task_group_weight 排序。
我的查询是:
SELECT
`id`,
`task_group`,
`task_group_weight`
FROM
`cron`
WHERE
`task_group` LIKE 'Imap%'
ORDER BY
`task_name`,
`task_group_weight`;
我希望输出是:
|id |task_group | task_group_weight
|1 |imaprunner | 1
|2 |imaprunner | 2
|3 |imaprunner | 10
我得到的是:
|id |task_group | task_group_weight
|1 |imaprunner | 1
|2 |imaprunner | 10
|3 |imaprunner | 2
因此,在 order by 的第二部分中,它像 varchar 而不是 int 一样对其进行排序。我已经尝试了以下方法:
ORDER BY `task_name`,`task_group_weight`+0;
ORDER BY `task_name`, CAST(`task_group_weight` AS UNSIGNED);
ORDER BY `task_name`, LPAD(`task_group_weight`,5,0);
所有结果都相同。希望有人能给我指点一下!
【问题讨论】:
-
您在 ORDER BY 中使用
task_name列。您不会向我们展示此栏的价值。我认为按其值排序提供了您已经看到的排序(因此随后按task_group_weight排序没有任何额外效果)。
标签: mysql sql-order-by