[英]sql error(1242) : sub query returns more than 1 row
我有兩個表a_daily
和o_daily_lcsgeneration
:
我正在嘗試此查詢:
update a_daily
set
a_daily.Turbine_Generation =
(
select sum(o_daily_lcsgeneration.Turbine_Generation)
from o_daily_lcsgeneration
where o_daily_lcsgeneration.Location = 1
group by o_daily_lcsgeneration.Date
)
但收到上述錯誤,指出子查詢超過1行
刪除GROUP BY
子句
UPDATE a_daily
SET a_daily.Turbine_Generation =
(
SELECT sum(o_daily_lcsgeneration.Turbine_Generation)
FROM o_daily_lcsgeneration
WHERE o_daily_lcsgeneration.Location = 1
)
它會使查詢返回不止一個具有多個日期的值。
更新1
UPDATE a_daily a
INNER JOIN
(
select g.Date, sum(g.Turbine_Generation) totalSum
from o_daily_lcsgeneration g
where g.Location = 1
group by g.Date
) b ON a.date = b.date
SET a.Turbine_Generation = b.totalSum
WHERE a.location = 1
要么
UPDATE a_daily a
LEFT JOIN JOIN
(
select g.Date, sum(g.Turbine_Generation) totalSum
from o_daily_lcsgeneration g
where g.Location = 1
group by g.Date
) b ON a.date = b.date
SET a.Turbine_Generation = COALESCE(b.totalSum, 0)
運行子查詢,您將看到它返回多個行。 您正在按日期對結果進行分組,因此SUM
表達式將計算每天的值。 您可以按照以下方式重新編寫查詢:
UPDATE a_daily
SET a_daily.Turbine_Generation = (SELECT SUM(o_daily_lcsgeneration.Turbine_Generation)
FROM o_daily_lcsgeneration
WHERE o_daily_lcsgeneration.Location = 1
AND o_daily_lcsgeneration.Date = 'YYYY-MM-DD'
GROUP BY o_daily_lcsgeneration.Date)
或(所有事件的總和):
UPDATE a_daily
SET a_daily.Turbine_Generation = (SELECT SUM(o_daily_lcsgeneration.Turbine_Generation)
FROM o_daily_lcsgeneration
WHERE o_daily_lcsgeneration.Location = 1)
update a_daily
set
a_daily.Turbine_Generation = (
select sum(o_daily_lcsgeneration.Turbine_Generation)
from o_daily_lcsgeneration where o_daily_lcsgeneration.Location = a_daily.Location
group by o_daily_lcsgeneration.Date
)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.