簡體   English   中英

從另一個表更新單個列的所有行

[英]Update all rows of a single column from another table

這是我的桌子;

TableP:

Pname | Psize
x | -
y | -
z | -
g | -
h | -

表:

Pname | Pdate | Ptext
x | XX.XX.XXXX | aasdhb
x | XX.XX.XXXX | asdbahsbdhasbdh
y | XX.XX.XXXX | ajsdbajsdba
y | XX.XX.XXXX | asndansjdbasd
x | XX.XX.XXXX | asd
z | XX.XX.XXXX | asdasbdhasb
g | XX.XX.XXXX | asdnjasdja
g | XX.XX.XXXX | asndjsabdas
h | XX.XX.XXXX | asndjand
x | XX.XX.XXXX | asdjasndnaksd

如您所見,我添加了一個新列(Psize),用於存儲TableS.Ptext的長度。

如何使用相關的Ptext長度更新Psize?

這是我的查詢不起作用:)(子查詢返回超過1行)

UPDATE TableP
   set TableP.Psize = (SELECT sum(LENGTH(Ptext)) as length
                         FROM TableS group by Pname)
 where TableP.Pname = TableS.Pname

提前致謝。

嘗試:

UPDATE TableP p
inner join (
    SELECT Pname, sum(LENGTH(Ptext)) as length 
    FROM TableS 
    group by Pname
) s on p.Pname = s.Pname
set p.Psize = s.length

保留您的子選擇的另一種形式:

UPDATE TableP p
set p.Psize = (
    SELECT sum(LENGTH(s.Ptext)) 
    FROM TableS s
    where s.pname = p.pname
)
where exists ( -- just to keep it consistent
  select 1
  from tables s
  where s.pname = p.pname
);

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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