根据另一个 table 中的主键查找设置新列值

Setting new column values based on primary key lookup in another table

我有一个 table 我想添加一个额外的列,其中列中的值由另一个 table 上的主键查找定义。

我可以通过使用原始 table 和所需的额外列创建 new table 来轻松做到这一点:

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

但我无法通过 向现有的 table 添加一列来找出正确的方法,如下所示:

ALTER TABLE FG
    ADD COLUMN PRODUCT_ALIAS VARCHAR(27);

UPDATE FG SET PRODUCT_ALIAS =  EXPRESSION;

我可以在这里使用什么表达式来实现与基于内部联接创建新 table 相同的效果?

在此上下文中,我无法弄清楚如何确保使用内部联接将标签缝合在正确的位置。如果确实可以做到的话。

当我尝试时

UPDATE  FG
    SET P_LABEL= (SELECT LABEL_LOOKUP.PRODUCT_ALIAS 
    FROM LABEL_LOOKUP INNER JOIN FG ON FG.P_ID = LABEL_LOOKUP);

我明白了

Error code 1093. You can't specify target table 'FG' for update in FROM clause.

做我想做的事情的正确方法是什么?还是做不到?

谢谢,

希瑟

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;