簡體   English   中英

sql錯誤(1242):子查詢返回多於1行

[英]sql error(1242) : sub query returns more than 1 row

我有兩個表a_dailyo_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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM