在MySQL中创建虚拟表

时间:2017-11-08 15:23:51

标签: mysql sql join alter

因此,从我的数据库中的许多表中,我将它们连接在一起以获取虚拟表以返回到我的nodejs程序。它出现了这样的事情:

Project | OS   |   On
A         Win     False       
A         Mac      True
A         Mac      True
B         Win      True
B         Win      True
C         OS       False

我的问题是;将上表转换为这样的虚拟表的最简单方法是什么。

Project | Win | Mac | True | False
   A        1    3      2      1
   B        2    0      2      0
   C        0    1      0      1

这应该在mysql查询中完成,还是应该在初始表返回到我的程序然后在那里编辑后完成?

1 个答案:

答案 0 :(得分:0)

您可以在SQL中执行此操作:

SELECT Project, 
  COUNT(CASE OS WHEN 'Win' THEN 1 END) AS Win,
  COUNT(CASE OS WHEN 'Win' THEN 1 END) AS Mac,
  COUNT(CASE `On` WHEN 'True' THEN 1 END) AS `True`,
  COUNT(CASE `On` WHEN 'False' THEN 1 END) AS `False`
FROM NoOneEverNamesTheirTableInSqlQuestions
GROUP BY Project