这个问题在这里已经有答案了:
如何在mysql中返回pivot表输出(9个答案)
两年前关门了。
使用此查询时:
SELECT channels.name, COUNT(places.id) AS 'free' FROM places INNER JOIN channels ON places.channelId = channels.id WHERE state = 'free' GROUP BY channelId;
结果是:
---------------
| name | free |
---------------
| foo | 1 |
| bar | 2 |
---------------
这一个给出了总的位置数:
SELECT channels.name, COUNT(places.id) AS 'total' FROM places INNER JOIN channels ON places.channelId = channels.id GROUP BY channelId;
结果如下:
----------------
| name | total |
----------------
| foo | 3 |
| bar | 4 |
----------------
你有办法得到这个结果吗
-----------------------
| name | free | total |
-----------------------
| foo | 1 | 3 |
| bar | 2 | 4 |
-----------------------
我还有一个问题:在第一个查询中,如果没有可用的位置,那么通道的行将不会出现:如果第一个查询中的通道foo没有可用的位置,那么结果的示例。
---------------
| name | free |
---------------
| bar | 2 |
---------------
有什么好主意可以提出这个完美的问题吗?有可能吗?
1条答案
按热度按时间wi3ka0sx1#
可以使用条件聚合,比如
在mysql中使用表达式时
sum(a= b)
它的结果是一个布尔值0/1,因此您可以使用上面的