我要和两张桌子一起展示汽车品牌。结构如下:

SELECT DISTINCT
  b.title
FROM
  brands as b
  INNER JOIN items as i
    ON i.brand_id = b.id
WHERE i.status = 1
ORDER BY COUNT(i.brand_id) DESC;

以上只产生一条记录。如果删除"ORDER BY COUNT(i.brand_id) DESC;",它将正确显示所有记录。
我想根据每个品牌类别下的车辆数量对结果进行排序。所以举例来说,如果宝马类车的数量最多,它应该是第一辆。

最佳答案

SELECT b.titleFROM brands as b INNER JOIN items as i ON i.brand_id = b.idWHERE i.status = 1GROUP BY b.titleORDER BY COUNT(i.brand_id) DESC;
这应该对你有用。
我会用
SELECT b.title, count(i.brand_id)FROM items i LEFT JOIN brands as b ON b.id = i.brand_idWHERE i.status = 1GROUP BY i.brand_idORDER BY COUNT(i.brand_id) DESC;
你关心的是库存汽车的数量。你想按你拥有的每个品牌的数量来细分它们。所以,您主要关注items表,只需要brands表来获取items表(brand name)中存储的信息。最后,为了得到每个品牌的总数,您必须让MySQL知道您希望在GROUP BY中得到什么。
我没有使用解释,但我认为底部查询更有效。

关于php - PHP,Mysql根据来自另一个表的记录数对结果进行排序,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/32105163/

10-12 07:28