gpt4 book ai didi

SQL - 将列数据从一个表添加到另一个表,同时保留原始数据

转载 作者:搜寻专家 更新时间:2023-10-30 21:58:53 24 4
gpt4 key购买 nike

我需要将一个表 (table1) 中的数据添加到另一个表 (table2),其中 fullname 列中的数据在两个表中都匹配。下面的代码几乎完成了我想要的,只是它删除了 table1 的标题列中的所有其他数据。

UPDATE table1
SET title = (SELECT title
FROM table2
WHERE table2.fullname = table1.fullname)

我的目标是更新 table1 的标题列,使其同时具有它最初的数据和 table2 的标题列中的数据,而不是在运行 SQL 查询之前删除 table1 的标题列中的数据。

最佳答案

根据您提供的语法,我假设您正在使用 Oracle。问题是,当您使用这种形式的 UPDATE 语句时,您还需要一个 WHERE EXISTS 子句或类似的东西:

UPDATE table1
SET title = ( SELECT title
FROM table2
WHERE table2.fullname = table1.fullname )
WHERE EXISTS ( SELECT 1 FROM table2
WHERE table2.fullname = table1.fullname )

否则不匹配的标题将被 NULLed 掉!这是因为当 table2 中不存在 fullname 时,子查询的结果将为 NULL。

如果连接是您正在寻找的(如上面@PM 77-1 的评论),那么您需要执行如下操作:

UPDATE table1
SET title = title || ',' || ( SELECT title
FROM table2
WHERE table2.fullname = table1.fullname )
WHERE EXISTS ( SELECT 1 FROM table2
WHERE table2.fullname = table1.fullname )

希望这对您有所帮助。

关于SQL - 将列数据从一个表添加到另一个表,同时保留原始数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26749054/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com