PHP按问题排序

时间:2013-09-03 11:31:13

标签: php mysql sql-order-by

我很难解决这个难题。我有一个网站,显示一些产品。我试图通过ASC订单显示产品,但它无法正常工作。

这是我当前的查询和输出:

$sql=executeQuery("select * from ".PREFIX."prod_info where prodId='".$pId."' order by ProductName+0) ASC");


AM 65
AM 67
AM 69
AM 104 (Chuck) 
AM 105 (Sin) 
AM 73
AM 76
AC 20 

任何帮助将不胜感激

1 个答案:

答案 0 :(得分:0)

你应该:

order by ProductName

而不是:

order by ProductName+0

后者将ProductName转换为整数。如果以字母开头,则将其视为0。可能发生的是所有都是以字母开头,所有都按值0排序 - 并且没有任何有趣的事情发生。

编辑:

您似乎希望按前两位数按字母顺序排序ProductName,然后按其他数字顺序排序。你可以这样做:

order by left(ProductName, 2),
         char_length(ProductName),
         ProductName

如果你在结尾处真的有无关的话,那就更难了。以下可能会更好:

order by left(ProductName, 2),
         substr(ProductName, 3) + 0,
         ProductName