mysql 比较同一个表中的列

标签 mysql join union self-join

我在 mysql 数据库中有一个表

id  fruit   number_eaten   day   
----------------------------------
1  apple        2           1
2  banana       1           1
3  orange       3           2
4  apple        1           2
5  banana       2           3
6  peach        1           3

我正在尝试找出如何选择,以便我可以比较每天吃了多少并放入电子表格中,以便我得到

fruit     number_eaten_day_1   number_eaten_day_2    number_eaten_day_3
------------------------------------------------------------------------
apple             2                  1                      0
banana            1                  0                      2
orange            0                  3                      0
peach             0                  0                      1

最佳答案

更容易将每个水果和每天的总和值 number_eaten 分开排列:

select fruit, day, sum(number_eaten)
from fruits_eaten_by_day 
group by fruit, day

但这样做也应该可以获得您需要的确切结果:

select 
  fruit, 
  sum(if(day=1, number_eaten, 0)) as number_eaten_day_1, 
  sum(if(day=2, number_eaten, 0)) as number_eaten_day_2, 
  sum(if(day=3, number_eaten, 0)) as number_eaten_day_3
from fruits_eaten_by_day
group by fruit

关于mysql 比较同一个表中的列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6755008/

相关文章:

php - Mysql - 连接2个带有限制的查询

sql - 使用 JOIN 而不是 HAVING(COUNT > n) 来提高性能

sql-server - UNION 与 IF 语句

sql - Oracle SQL,总是在带有联合的查询中显示三行

PHP/SQL 阻止将某些时间写入表

mysql - 使用 group by 和 Laravel 获取最新行

php - 需要一个检查单元格的 mysql case 语句

MySQL 计算过选择不适用于空子选择

MYSQL - 从一个表更新插入到另一个表

c# - .net Core 应用程序中 Linux 上的 MySQL.Data 问题