更新另一个表中单个列的所有行

发布于 2024-10-09 06:41:16 字数 772 浏览 3 评论 0原文

这是我的桌子;

TableP:

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

TableS:

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

提前致谢。

Here are the my tables;

TableP:

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

TableS:

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

As you can notice, i've added a new column (Psize) which stands for storing TableS.Ptext length.

How can i update Psize with related Ptext length?

Here is the my query which is not work :) (Subquery returns more than 1 row)

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

Thanks in advance.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

逆流 2024-10-16 06:41:16

尝试:

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

Try:

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
待"谢繁草 2024-10-16 06:41:16

另一种形式保留您的子选择:

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
);

Another form keeping your subselect:

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
);
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文