按最小值组合两个子查询



我的想法是将这两个子查询组合起来。它们几乎是一样的-子查询,只是第二个查询有+1 WHERE条件。我想得到这两个结果,并在它们之间返回MIN starttime,然后将其分组,以便根据最小starttime,一个月中的每一天都必须只有一行。但语法似乎不正确,在{从这个地方选择B.id;

SELECT MIN(starttime) starttime,MIN(id) id FROM AG GROUP BY starttime
{
   SELECT B.id FROM
   (
       SELECT DATE(starttime) date_starttime,MIN(starttime) starttime
       FROM calendar
       WHERE starttime between '2012-02-00 00:00:00' and '2012-03-00 00:00:00'
       GROUP BY DATE(starttime)
   ) A LEFT JOIN calendar B USING (starttime), 
   SELECT D.id FROM
   (
       SELECT DATE(starttime) date_starttime,MIN(starttime) starttime
       FROM calendar
       WHERE repeat != 0 AND starttime between '2012-02-00 00:00:00' and '2012-03-00 00:00:00'
       GROUP BY DATE(starttime)
   ) AD LEFT JOIN calendar BD USING (starttime)
} 

您正试图在MySQL上下文中使用PHP构造(大括号)-MySQL不理解大括号,因此在查询中会出现错误。

我猜你可能是从PHP程序中改编的?在PHP中,PHP解释器解析大括号内的表达式,并在将查询交给MySQL之前将其替换到MySQL查询中。

最新更新