使用以下查询以15分钟为间隔从表中选择数据,其中某个点具有state = 1:
SELECT * , ROUND( UNIX_TIMESTAMP( log_date ) / ( 15 *60 ) ) AS period
FROM `site_node_point_states`
WHERE state =1
AND site_node_point_id = "11"
AND log_date
BETWEEN '2011-09-12 13:00:00'
AND '2011-09-12 13:00:00'
GROUP BY period
ORDER BY period ASC
此查询基于单个site_node_point_id
完全符合我的要求,但我希望能够添加另一个site_node_point_id
,并将其分别按period
分组site_node_point_id
{ {1}}数据。
我正在使用PHP来进行此查询,并希望尝试将其限制为单个查询,而不是使用不同的site_node_point_id
循环使用当前查询。
显然,如果我要将AND site_node_point_id = "11"
更改为AND site_node_point_id = "11" OR site_node_point_id = "14"
,它会从site_node_point_id
14和11订购数据。
SQL中是否有解决方案根据我选择的GROUP BY
为每组数据单独执行site_node_point_id
?
答案 0 :(得分:3)
使用GROUP BY site_node_point_id, period
。这应该首先按site_node_point_id对结果进行分组,然后是句点。
答案 1 :(得分:0)
这可能就是你要找的东西:
SELECT * , ROUND( UNIX_TIMESTAMP( log_date ) / ( 15 *60 ) ) AS period
FROM `site_node_point_states`
WHERE state =1
AND site_node_point_id in ("11", "12")
AND log_date
BETWEEN '2011-09-12 13:00:00'
AND '2011-09-12 13:00:00'
GROUP BY site_node_point_id, period
ORDER BY site_node_point_id, period ASC