我有一个要添加额外列的表,其中列中的值由另一个表上的主键查找定义。
我可以通过使用原始表和所需的额外列创建新表来轻松完成此操作:

CREATE TABLE FG_LABELLED
SELECT FG.*, L.PRODUCT_ALIAS
FROM LABEL_LOOKUP AS L INNER JOIN FG
ON FG.P_ID = L.P_ID;

但是,我不能想出正确的方法来做这件事,通过添加一个列到现有表,按SO:
ALTER TABLE FG
    ADD COLUMN PRODUCT_ALIAS VARCHAR(27);

UPDATE FG SET PRODUCT_ALIAS =  EXPRESSION;

对于实现与基于内部联接创建新表相同效果的表达式,这里可以使用什么?
在这种情况下,我无法确定如何确保内部连接将用于在正确的位置缝合标签。如果真能做到的话。
当我试着
UPDATE  FG
    SET P_LABEL= (SELECT LABEL_LOOKUP.PRODUCT_ALIAS
    FROM LABEL_LOOKUP INNER JOIN FG ON FG.P_ID = LABEL_LOOKUP);

我明白了
错误代码1093。不能在中指定要更新的目标表'FG'
从句。
做我想做的事的正确方法是什么?还是不可能做到?
谢谢,
希瑟
p.s.我是SQL新手

最佳答案

更新的语法应该如下所示:

UPDATE FG
INNER JOIN LABEL_LOOKUP ON FG.P_ID = LABEL_LOOKUP.P_ID
SET FG.P_LABEL=LABEL_LOOKUP.PRODUCT_ALIAS;

10-07 15:09