MySQL 一条语句中一张表的多个结果

标签 mysql select

我尝试在两个表中使用多重选择查询:

表1 -> 信息选项卡:

  theType   |          theTime    | theCount 
------------+---------------------+----------
 WithPinIt  | 2017-04-01 13:00:00 | 45
 WithPinIt  | 2017-04-01 13:00:00 | 100
 WithMinIt  | 2017-04-01 13:00:00 | 75
 WithQinIt  | 2017-05-01 13:00:00 | 45
 WithMinIt  | 2017-06-01 13:00:00 | 55

表2 -> defsTab:

   theId  |   theDefs   |   theType
----------+-------------+-------------
1         |  defQs      |  WithQinIt 
1         |  defOs      |  WithOinIt 
1         |  defJs      |  WithJinIt 

我想要得到的是这样的结果:

          theTime    |  P  |  M 
---------------------+-----+-----
2017-04-01 13:00:00  | 145 | 
2017-04-01 13:00:00  |     | 75 
2017-06-01 13:00:00  |     | 55

到目前为止我使用了这个查询:

SELECT   
    theTime,   
    (SELECT SUM(theCount) AS pSum FROM infoTab WHERE theType NOT IN (SELECT content FROM defsTab) AND theType LIKE '%P%' GROUP BY theTime) AS Ps,   
    (SELECT SUM(theCount) AS cSum FROM infoTab WHERE theType NOT IN (SELECT content FROM defsTab) AND theType LIKE '%C%' GROUP BY theTime) AS Cs   
FROM infoTab 

但它不起作用......有什么帮助吗?

最佳答案

如果你使用 CASE 应该可以工作

select
theTime,
sum(
CASE 
WHEN theType like '%P%' THEN theCount
ELSE 0
END) as P,
sum(
CASE 
WHEN theType like '%C%' THEN theCount
ELSE 0
END) as C
from infoTab
where theType NOT IN (SELECT content FROM defsTab)
group by theTime;

关于MySQL 一条语句中一张表的多个结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43746198/

相关文章:

mysql select 匹配多行

javascript - tablesorter 一个部件上有多个动态表

mysql - 如何使用子查询进行更新?

php - MYSQL SELECT WITH LEFT JOIN LIMIT 1

mysql - 在MySQL中,如何获取预定义列表中至少包含两个字符的所有字符串

ruby-on-rails - OnClick 选择 text_field rails 中的所有文本

sql - 查找和显示重复项

php - Laravel 多数据库,一个数据库存储用户

MySQL Trigger Insert After with Select 来自不同表的查询

MySQL 计算多列上的不同值