MySQL - 获取特定 ID 的总数

标签 mysql

我有一个像这样的 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 

DEMO

关于MySQL - 获取特定 ID 的总数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23467811/

相关文章:

mysql - 查询得到的结果我不明白

php - 在插入之前检查值,如果已经存在,请不要在php中使用mysql插入它

php - 检查密码的有效方法在数据库中

如果搜索的关键字超过 2 个,PHP 搜索将不起作用

mysql - 比较两列中的最高收入访客

php - 网站不显示默认编码的内容

java - 通过Java注册Mysql数据库失败

php - 排除字符串中的结果

php - 组合多个唯一的 MySQL 表并按一列排序

java - MySQL PersistenceException, Play 中的 "Connection is closed"! 2.2