PHP 按问题排序

标签 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 

如有任何帮助,我们将不胜感激

最佳答案

你应该有:

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

关于PHP 按问题排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18591193/

相关文章:

php - Laravel-5 如何使用 id 值和 name 值从数据库中填充选择框

PHP mysql PDO 拒绝设置 NULL 值

php/MySQL - 如何将产品表连接在一起

mysql - MySQL 十进制字段的正确默认值是多少?

php - 如何使用时间来计算您登录了多少秒

MySQL 按 id 排序,除非记录有parent_id

php - Google recaptcha 不能在我的网站上工作,但在其他网站上工作

php - MySQL 'field list' 中的未知列

MySQL/MariaDB - 按内部子查询排序

mysql - mysql的复杂顺序