我正在尝试获取两行的结果集。
这两行是在 BETWEEN 运算符中指定的时间跨度之间找到的最后一行。
我怎样才能达到这个结果?
下面的代码不起作用。
SELECT
DaySum_1+DaySum_2+DaySum_3+DaySum_4+DaySum_5
AS october
FROM solarenergy
WHERE ((DatumUhrzeit BETWEEN '2014-10-01 01:00:00' AND '2014-10-01 23:00:00') LIMIT 1)
OR ((DatumUhrzeit BETWEEN '2014-10-02 01:00:00' AND '2014-10-02 23:00:00') LIMIT 1)
ORDER BY DatumUhrzeit DESC
您需要执行UNION
才能应用两个单独的LIMIT
,因为每个查询只能使用一个。 要使用单个LIMIT
子句,每个UNION
组件都必须用()
(
SELECT
DaySum_1+DaySum_2+DaySum_3+DaySum_4+DaySum_5 AS october
FROM solarenergy
WHERE DatumUhrzeit BETWEEN '2014-10-01 01:00:00' AND '2014-10-01 23:00:00'
ORDER BY DatumUhrzeit DESC
LIMIT 1
) UNION (
SELECT
DaySum_1+DaySum_2+DaySum_3+DaySum_4+DaySum_5 AS october
FROM solarenergy
WHERE DatumUhrzeit BETWEEN '2014-10-02 01:00:00' AND '2014-10-02 23:00:00'
ORDER BY DatumUhrzeit DESC
LIMIT 1
)
如果要保证由UNION
产生的两行订单,则必须在最后的()
组之外应用
(
SELECT
DaySum_1+DaySum_2+DaySum_3+DaySum_4+DaySum_5 AS october
FROM solarenergy
WHERE DatumUhrzeit BETWEEN '2014-10-01 01:00:00' AND '2014-10-01 23:00:00'
ORDER BY DatumUhrzeit DESC
LIMIT 1
) UNION (
SELECT
DaySum_1+DaySum_2+DaySum_3+DaySum_4+DaySum_5 AS october
FROM solarenergy
WHERE DatumUhrzeit BETWEEN '2014-10-02 01:00:00' AND '2014-10-02 23:00:00'
ORDER BY DatumUhrzeit DESC
LIMIT 1
)
/* Global ORDER BY after UNION */
ORDER BY october ASC