Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/57.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何从一个MySQL列输出多个列?_Mysql - Fatal编程技术网

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

如何从一个MySQL列输出多个列?,mysql,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 20

考虑下表

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
每个tweet都分配了一个“类”,该类为1、2或3,而“类型”为0、1或2。我想对每个类别和类型的推文数量进行概述,如下所示:

nyse_date   class1  class2  class3  type0  type1  type2
-------------------------------------------------------
2011-03-12  3       1       2       6      1      1
我从以下查询开始(按日期分组,因为实际表有许多不同的日期):

预期产出为

nyse_date   class1  class2
--------------------------
2011-03-12  3       1     
但我却犯了一个错误。我相信这与这样一个事实有关,即每个查询只能使用一个WHERE子句(我使用的是2),但我不知道替代方法是什么。你知道吗


非常感谢您的帮助:-)

在MySql中使用GROUP\u CONCAT聚合函数:

试试这个:

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
是一个布尔表达式,其求值为
TRUE
FALSE
。A
TRUE
等于
1
。因此,使用
SUM
实际上意味着“计算条件适用的所有行”

这是否有效

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

这真是太棒了,谢谢:-)使用这种技术,是否也可以计算类1中类型为0的tweet?所以基本上,
…和(type=0和class=1)是type0class1
?确实如此。开始玩吧!
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