Mysql 基于另一个表中的主键查找设置新列值

Mysql 基于另一个表中的主键查找设置新列值,mysql,syntax,key,inner-join,calculated-columns,Mysql,Syntax,Key,Inner Join,Calculated Columns,我有一个表要添加一个额外的列,其中列中的值由另一个表上的主键查找定义 我可以通过使用原始表和所需的额外列创建一个新的表来轻松实现这一点: CREATE TABLE FG_LABELLED SELECT FG.*, L.PRODUCT_ALIAS FROM LABEL_LOOKUP AS L INNER JOIN FG ON FG.P_ID = L.P_ID; 但我无法通过向现有表中添加列来找到正确的方法,如下所示: ALTER TABLE FG ADD COLUMN PRODUCT_A

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

我可以通过使用原始表和所需的额外列创建一个新的表来轻松实现这一点:

CREATE TABLE FG_LABELLED
SELECT FG.*, L.PRODUCT_ALIAS
FROM LABEL_LOOKUP AS L INNER JOIN FG
ON FG.P_ID = L.P_ID;
但我无法通过向现有表中添加列来找到正确的方法,如下所示:

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、 美国。我是SQL新手

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

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

谢谢非常有用。不过,当解析这个时,我感到困惑。内部连接通常使用两个参数,但这里似乎只有一个?忘记了连接中的字段名,该死的复制粘贴,将字段名添加到连接中。我主要在“from”上下文中使用内部连接,例如from FG internal join GP on(FG.id=GP.id)。我一直认为内部连接有args FG和GP。我想让我困惑的是,第1行中的FG似乎同时充当UPDATe的参数和INNER join的arg。这两种情况下的表(不用于删除)可以。。。就像你现在。。。一张桌子。联接是一种表,因此如果select或update语句中有联接,则可以只考虑一个新表。(fg JOIN gp ON fg.id=gp.id)作为newtableAHA。帕伦斯帮忙。德克萨斯州。