如何解决ORDER BY两个字段第二字段int订单为varchar问题
现在我已经为这个问题折断了两个小时,我想这很简单。我有一个带有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);
所有结果相同。希望有人能给我快速的指点!
解决方法
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。