MySQL字段排序,数据混乱。

有这样一种情况。在一张数据表中,存在id,存在order_num。这两个字段都是int(10)类型。
现在需要根据order_num字段排序,一切都是正常的。但有一种情况,如果order_num的值是相同的,比如都是0,这时候数据顺序都是混乱的。于是加上一个id字段做额外的排序。操作如下图:


两者查询的结果却不相同,有人知道这个concat是怎么处理的吗?

回答

concat 以后是按照字符串排序了 9最大 1最小

CONCAT 之后就是字串了,不再是数字。

如 CONCAT(1,10) 是 110,而 CONCAT(10,1) 是 101,显然顺序是 101,110;另外,CONCAT(1,10) 是 110,CONCAT(1,2) 是 12,都是字符串,排序就是 110,12,除非你再用 CAST 转回数字。

因此还是用 ORDER BY a, b 这种更能明确先按哪个排再按哪个排。


当然,您就是想用 CONCAT 后排序,那最好给数字左边补 0,如 CONCAT(LPAD(order_num,10,0), LPAD(id,10,0))

以上是 MySQL字段排序,数据混乱。 的全部内容, 来源链接: utcz.com/a/37309.html

回到顶部