题目是这个:
UPDATE语句(利用一个表中的数据修改另外一个表中的数据)
利用Part表中的零售价格来修改lineitem中的extendedprice,其中extendedprice=part.retailprice * quantity。
然后我的代码是这个
UPDATE LINEITEM
SET L_EXTENDEDPRICE=P_RETAILPRICE*L_QUANTITY
FROM PART
WHERE L_PARTKEY=P_PARTKEY;
结果显示语法错误,但是语法没问题啊
然后我又这样弄了
UPDATE LINEITEM
LEFT JOIN PART ON L_PARTKEY=P_PARTKEY
SET L_EXTENDEDPRICE=P_RETAILPRICE*L_QUANTITY;
这样根本就没有任何的反应,得按Ctrl C 才有反应,但是依旧不成功
我之前是用了下面的代码成功了,但是现在也不行了,和上一个反应是一样的
UPDATE LINEITEM AS L, PART AS P
SET L_EXTENDEDPRICE=P_RETAILPRICE*L_QUANTITY
WHERE L_PARTKEY=P_PARTKEY;
未成功的图
上一次成功的图
所以这到底是为什么???该怎么解决???求大佬指导!!!
UPDATE LINEITEM
SET L_EXTENDEDPRICE=P_RETAILPRICE*L_QUANTITY
FROM PART
WHERE L_PARTKEY=P_PARTKEY;
这个有语法问题,update后面是表名,应该类似后面的语句(用了别名那个),不能再用from table,还有后面的既然用了别名L,P建议也加上,类似下面这样
UPDATE LINEITEM AS L, PART AS P
SET L.L_EXTENDEDPRICE=P.P_RETAILPRICE*L.L_QUANTITY
WHERE L.L_PARTKEY=P.P_PARTKEY;
字段命名也不规范,主键一般用id即可,不需要加上前缀,后面联合查询通过别名区分即可,比如L.id = P.id,现在无法正常更新,建议看看数据量,是否执行太慢导致。
UPDATE LINEITEM AS L
INNER JOIN PART AS P ON L.L_PARTKEY=P.P_PARTKEY
SET L.L_EXTENDEDPRICE=P.P_RETAILPRICE*L.L_QUANTITY ;