【发布时间】:2014-09-18 18:20:07
【问题描述】:
我有两张桌子。像这样;
Products table
id | brand | bla bla bla
Priority table
id | brand
我正在列出从 Products 表中选择 DISTINCT 品牌 BY ORDERING product COUNT like this;
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
【问题讨论】:
-
如果您愿意,请考虑遵循以下简单的两步操作: 1. 如果您还没有这样做,请提供适当的 DDL(和/或 sqlfiddle),以便我们可以更轻松地复制问题。 2. 如果您尚未这样做,请提供与步骤 1 中提供的信息相对应的所需结果集。
标签: mysql sql select count distinct