【发布时间】:2020-02-07 15:38:33
【问题描述】:
SELECT
(SELECT SUM(kwh) FROM energy_logger WHERE TIME >= '05:30:00' AND TIME < '18:30:00' GROUP BY Date) as daytime,
(SELECT SUM(kwh) FROM energy_logger WHERE TIME >= '18:30:00' AND TIME < '22:30:00' GROUP BY Date) as peaktime,
(SELECT SUM(kwh) FROM energy_logger WHERE TIME >= '22:30:00' OR TIME < '05:30:00' GROUP BY Date) offpeaktime,
Date
FROM energy_logger
GROUP BY Date
ORDER BY ID DESC
这是我的查询! 而且我总是有一个问题,“子查询返回超过 1 行”.....
【问题讨论】:
-
我认为您可能需要使用左连接中的子查询。
-
这意味着
SELECT SUM(kwh) FROM energy_logger WHERE TIME >= '05:30:00' AND TIME < '18:30:00' GROUP BY Date)(以及它下面的两个子查询)可能会在它们自己的结果中返回不止一行。因此,如何将其放入外部 SELECT 查询的单行中的单个字段中?这不合逻辑。这就是错误告诉你的。如果要使用子查询生成单个值,则必须确保子查询只能返回一行。但正如其他人所提到的,您实际上可能根本不需要子查询。 -
P.S.我更改了您的标签,因为这个问题只是关于 SQL。它与 PHP 或 XAMPP 无关。您可能会在应用程序的其他地方使用这些技术,但它们与此问题无关。如果您准确地标记您的问题,他们更有可能被具有合适技能的人看到来帮助您。如果您使用了错误的标签,您可能会获得更少的帮助,并且会惹恼那些试图阅读对他们毫无意义的问题的人!
标签: mysql sql group-by sum pivot