选择单独分组的两组数据

时间:2011-09-13 21:52:12

标签: mysql sql

使用以下查询以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

2 个答案:

答案 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