根据另一个 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;
我有一个 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;