我有两张 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
结果是:
- 一个品牌(65 款产品)
- B 品牌(43 个产品)
- C 品牌(23 个产品)
- D 品牌(17 个产品)
这是一条完美的工作线。但我想优先考虑一些品牌。位于列表顶部。
像这样:
- S 品牌(22 个产品)
- X 品牌(4 个产品)
- 一个品牌(65 款产品)
- B 品牌(43 个产品)
- C 品牌(23 个产品)
- 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/