MYSQL 品牌按产品数量列出顺序,但是

标签 mysql sql select count distinct

我有两张 table 。像这样;

<小时/>
Products table

id | brand | bla bla bla
<小时/>
Priority table

id | brand
<小时/>

我正在列出从产品表中选择不同的品牌 BY ORDERING 产品数量,如下所示;

SELECT DISTINCT brand as bra, (SELECT COUNT(id) FROM Products WHERE brand = bra) as cnt FROM Products ORDER BY cnt DESC

结果是:

  1. 一个品牌(65 款产品)
  2. B 品牌(43 个产品)
  3. C 品牌(23 个产品)
  4. D 品牌(17 个产品)

这是一条完美的工作线。但我想优先考虑一些品牌。位于列表顶部。

像这样:

  1. S 品牌(22 个产品)
  2. X 品牌(4 个产品)
  3. 一个品牌(65 款产品)
  4. B 品牌(43 个产品)
  5. C 品牌(23 个产品)
  6. D 品牌(17 个产品)

我用过这条线。但没有成功。

SELECT DISTINCT brand as bra, (SELECT COUNT(id) FROM Products WHERE brand = bra) as cnt, , (SELECT brand FROM Priority) as prior FROM Products ORDER BY prior ASC,cnt DESC

什么是真线?谢谢...

---编辑--- 完整答案是:

SELECT p.brand as bra, count(p.id) as cnt
FROM products p
GROUP BY bra
ORDER BY bra IN (SELECT pri.brand FROM priority pri ORDER BY pri.brand ASC) DESC, mark ASC

最佳答案

使用这个:

ORDER BY bra IN (SELECT brand FROM Priority) DESC, cnt DESC

关于MYSQL 品牌按产品数量列出顺序,但是,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24980392/

相关文章:

mysql - sql数据库中的条件

sql - 将 varchar 值 'Oct ' 转换为数据类型 int 时转换失败

mysql - 在使用 'OR' 时不使用索引键

php - Customer_id 的订单计数(按类别 no)

mysql - 使用 HAVING、GROUP BY 和 GROUP_CONCAT 对 SQL 进行计数

php - MySQL:多个表(一次所有列,三次仅单个列)

mysql - 使用 mysql 变量连接

mysql - 将一个表中自动生成的索引插入到另一个表中

php - CodeIgniter mySQL 2 表左外连接

mysql - VB.NET Windows 服务不能与 MySql 一起工作