我有一个像这样的 MySQL 表:
MYTABLE
|-------------|
| ID | COLOR |
|----|--------|
| 01 | WHITE |
| 01 | BLACK |
| 01 | YELLOW |
| 02 | RED |
| 02 | BLUE |
| 02 | YELLOW |
| 03 | BLACK |
| 03 | BLUE |
| 03 | YELLOW |
|-------------|
当我想从一个 ID 中获取所有颜色时,我执行这个查询:
SELECT `COLOR` FROM `MYTABLE` WHERE `ID` = 2
RESULT
|--------|
| COLOR |
|--------|
| RED |
| BLUE |
| YELLOW |
|--------|
如何获取每种颜色在表格中出现的次数?
我必须执行什么查询才能获得以下结果?
HOW CAN I GET THIS?
|----------------|
| COLOR | COUNT |
|--------|-------|
| RED | 1 |
| BLUE | 2 |
| YELLOW | 3 |
|----------------|
提前致谢。
最佳答案
SELECT
COLOR,
count(*) as `COUNT`
From
MYTABLE
GROUP BY COLOR;
如果每个 ID 有多种颜色可用,您可以在 group by
之前使用 Where ID = 2
添加 where 条件
现在如果你需要找出每种颜色在表中出现的总时间而不考虑id,然后用id过滤数据那么你可以使用下面的
select
t1.COLOR,
cnt as `count`
from MYTABLE t1
inner join (
select
COLOR,
count(*) as cnt
from MYTABLE
group by COLOR
)t2
on t2.COLOR = t1.COLOR
where t1.id = 2
关于MySQL - 获取特定 ID 的总数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23467811/