urnotwl 2020-06-04 18:29 采纳率: 0%
浏览 466

MYSQL update语句出现问题,怎么解决???

题目是这个:

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;

未成功的图

图片说明

上一次成功的图

图片说明

所以这到底是为什么???该怎么解决???求大佬指导!!!

  • 写回答

2条回答 默认 最新

  • Json-Huang 2020-06-05 13:57
    关注
    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,现在无法正常更新,建议看看数据量,是否执行太慢导致。

    评论

报告相同问题?