如何从一个MySQL列输出多个列?

时间:2012-07-14 12:59:31

标签: mysql

考虑下表

tweets
---------------------------------
tweet_id  nyse_date   class  type
---------------------------------
1         2011-03-12  2      0
2         2011-03-12  1      1
3         2011-03-12  1      0
4         2011-03-12  1      0
5         2011-03-12  0      0
6         2011-03-12  1      0
7         2011-03-12  3      2
8         2011-03-12  3      0

每条推文都分配了一个'class',它是1,2或3,'type'是0,1或2.我想概述每个类和类型中的推文数量,如下:

nyse_date   class1  class2  class3  type0  type1  type2
-------------------------------------------------------
2011-03-12  3       1       2       6      1      1

我开始使用以下查询(按日期分组,因为真实表有许多不同的日期):

SELECT
  nyse_date,
  COUNT(class) AS class1 FROM tweets WHERE class = 1,
  COUNT(class) AS class2 FROM tweets WHERE class = 2
GROUP BY
  nyse_date ASC

预期产量为

nyse_date   class1  class2
--------------------------
2011-03-12  3       1     

但我收到了错误。我相信这与我每次查询只能使用一个WHERE子句(我使用的是2)这一事实有关,但我不知道替代方案是什么。你呢?

非常感谢任何帮助: - )

3 个答案:

答案 0 :(得分:6)

试试这个:

SELECT
  nyse_date,
  SUM(class = 1) AS class1,
  SUM(class = 2) AS class2,
  SUM(class = 3) AS class3
FROM 
  tweets
GROUP BY
  nyse_date ASC

class = 1是一个布尔表达式,可以评估为TRUEFALSETRUE等于1。因此,使用SUM实际上意味着“计算条件成立的所有行”

答案 1 :(得分:0)

答案 2 :(得分:0)

这有用吗?

SELECT nyse_date, SUM( IF( class =1, 1, 0 ) ) AS class1, SUM( IF( class =2, 1, 0 ) ) AS class2
FROM tweets
GROUP BY nyse_date