php - SQL 查询按组排序

标签 php mysql database

您好,我需要查询方面的帮助。这是我的查询和表结构。

SELECT *
FROM products_description a, products b
where a.products_id=b.products_id
AND b.products_status >0
AND a.products_name LIKE '%".$q."%'
ORDER BY b.products_quantity DESC LIMIT 10 


---------------------------------------------------
| products_id | products_name | products_quantity |
---------------------------------------------------
|     980     |       SOS     |        21         |
---------------------------------------------------
|     101     |       GOLD    |        9          |
---------------------------------------------------
|     232     |       BALL    |        1          |
---------------------------------------------------
|     422     |       SONG    |        O          | 
---------------------------------------------------
|     371     |       ALL     |        O          | 
---------------------------------------------------
|     72      |       FISH    |        O          | 
---------------------------------------------------

我希望它能够按字母顺序排序(产品名称),同时将数量为 0 的产品保留在底部。通常,我想要这样的结果:

---------------------------------------------------
| products_id | products_name | products_quantity |
---------------------------------------------------
|     980     |       Ball    |        1          |
---------------------------------------------------
|     101     |       GOLD    |        9          |
---------------------------------------------------
|     232     |       SOS     |        21         |
---------------------------------------------------
|     422     |       All     |        O          | 
---------------------------------------------------
|     371     |       FISH    |        O          | 
---------------------------------------------------
|     72      |       SONG    |        O          | 
---------------------------------------------------

感谢任何帮助!

最佳答案

Select ...
From products_description a
    Join products b
        On a.products_id=b.products_id
Where b.products_status >0
    And a.products_name LIKE '%".$q."%'
Order By Case When products_quantity = 0 Then 1 Else 0 End Asc
    ,  a.products_name Asc
Limit 10 

关于php - SQL 查询按组排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5974086/

相关文章:

database - 在应用程序和扩展程序之间共享 sqlite 数据库

ruby-on-rails - 清除 heroku 生产站点上的 Rails 应用程序数据库

php - xpath 和自关闭 <br/>

php - 如何在 Codeigniter 中使用 IN 运算符进行绑定(bind)查询

php - php 中的 SQL 查询无法按要求工作

mysql - 如何查询 mysql 表中的更改?

PHP/MySQL : Insert data into database character set problem

php - 如何将 var_dump 的输出转换为数组或变量?

php - 保存字符串的最后 10 位数字

mysql - 如何形成 SQL 查询