shi*_*hin 30 mysql sql-order-by
以下代码按id,1,10,11,12的顺序输出.
我想把它变成1,2,3,4 ......
谁能告诉我应该做什么呢.
$Q = $this->db->query('SELECT P.*, C.Name AS CatName FROM products AS P LEFT JOIN categories C ON C.id = P.category_id');
提前致谢.
Sco*_*ers 64
首先,在最后添加order by子句:
ORDER BY category_id
如果category_id是一个字符串,那么您必须将其视为整数.有几种方法可以做到这一点.我通常加零.你也可以施展它.
ORDER BY category_id + 0
hal*_*dan 10
你可以做一个明确的演员:
按CAST排序(category_id AS UNSIGNED INTEGER)
但是您应该重新考虑数据库布局,因为仅包含数值的字段也应该是数字类型.
祝愿,费边
如前所述,MySQL不支持字母数字排序.解决这个问题的一个常见技巧是首先按长度排序:
ORDER BY LENGTH(column_name), column_name
只要值的非数字部分长度相同,这将在10之前排序1,在100之前排序10等.