现在我已经为这个问题折断了两个小时,我想这很简单。我有一个带有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
因此,在顺序的第二部分中,它像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);
所有结果相同。希望有人能给我快速的指点!