这个问题在这里已经有答案了:
如何在mysql中返回pivot表输出(9个答案)
两年前关门了。
我有一个mysql表,每一行代表一个在php中发出的curl请求。使用列名(ip、http代码、时间\u检查)
SELECT *
FROM proxy_stastistics
WHERE time_checked > UNIX_TIMESTAMP( NOW() - INTERVAL 24 HOUR )
我现在使用上面的查询只返回过去24小时内的记录,但是我只想每个唯一的ip地址返回一行,但是同时创建了两个额外的列,其中任何http\u code=200或http\u code=0作为增量列。
所以我会得到这样的东西
IP | 200 | 0 | 404
192.168.0.1 | 100 | 5 | 1
192.168.0.2 | 84 | 3 | 0
在阅读mysql pivot表之后,我能够创建以下查询来实现我想要做的事情。
SELECT ip_address,
SUM(http_code = '200') AS http200,
SUM(http_code = '0') AS http0,
SUM(http_code = '404') AS http404
FROM proxy_stastistics
WHERE time_checked > Unix_timestamp(Now() - interval 24 hour)
GROUP BY ip_address
1条答案
按热度按时间zc0qhyus1#
如果我理解正确,你需要这样的东西:
你可以在这里看到工作小提琴:
http://sqlfiddle.com/#!9/35df03/8号