我仍然是postgres和处理数据库的新手。我想要做的是以下几点:
我有两个表(批量,已选择)。每个表中都有一个 id 列, selected 表中有一个名为 name 的列。
我要做的是比较两个表中 id 的值,当它们匹配时,将 name 的值从第二个表复制到第一个表中的新列。否则,该值应保持 NULL 。新列已创建并准备好接收数据。我尝试了以下方法:
select id,
CASE WHEN exists (select 1 from selected where bulk.id = selected.id) THEN selected.names
ELSE NULL
END
AS name
FROM bulk;
我不确定这完全没有意义,但这是我研究后最接近的事情。当我运行这个时,我收到以下错误:[42P01]错误:缺少所选表的FROM子句条目
错误是不言自明的,但我不知道如何解决它
任何帮助将不胜感激! 感谢
答案 0 :(得分:0)
如果要更新列,请使用update
。我有点迷失哪个表需要更新,但是这样的事情:
update secondtable t2
set name = t1.name
from firsttable t1
where t2.id = t1.id;
至于你的select
,你会这样做:
select b.id,
(select s.name from selected s where b.id = s.id) as name
from bulk b;
您不需要case
。如果没有匹配项,则返回的值为NULL
。