【发布时间】:2015-06-24 11:13:36
【问题描述】:
我有一个表,我想向其中添加一个额外的列,其中列中的值由另一个表上的主键查找定义。
我可以通过使用原始表和所需的额外列创建一个新表来轻松做到这一点:
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' 进行更新 FROM 子句。
什么是做我想做的事情的正确方法?还是做不到?
谢谢,
希瑟
附言我是 SQL 新手
【问题讨论】:
标签: mysql syntax key inner-join calculated-columns