【发布时间】:2020-09-09 08:20:03
【问题描述】:
我目前正在学习 SQL,并且正在使用 ORACLE DATABASE。 我已经完成了这个网站的练习:https://sql.sh/exercices-sql/commandes 我正在做完全相同的事情,但这次是针对 Oracle 数据库。
我的问题如下:
我有这两张桌子:
CREATE TABLE orders(
order_id INT GENERATED BY DEFAULT AS IDENTITY,
customer_id INT NOT NULL,
order_date DATE NOT NULL,
reference VARCHAR(255) NOT NULL,
total_price_cache DECIMAL(10, 3) NOT NULL,
PRIMARY KEY(order_id)
);
CREATE TABLE order_lines(
order_line_id INT GENERATED BY DEFAULT AS IDENTITY,
order_id INT NOT NULL,
name VARCHAR(255) NOT NULL,
quantity INT NOT NULL,
unit_price DECIMAL(10, 3) NOT NULL,
total_price DECIMAL(10, 3) NOT NULL,
PRIMARY KEY(order_line_id)
);
我正在尝试执行以下操作:
UPDATE orders AS t1
INNER JOIN
( SELECT order_id, SUM(order_lines.total_price) AS p_total
FROM order_lines
GROUP BY order_id ) t2
ON t1.order_id = t2.order_id
SET t1.total_price_cache = t2.p_total
我为 MySQL 工作,但不为 Oracle 数据库工作。 我不断收到错误 ORA-00971 说关键字 SET 不存在。
谁能解释我如何为 Oracle 数据库执行此操作。
谢谢
【问题讨论】:
-
Oracle 更新不能那样工作。不能用
as表达式限定表,也不能使用内连接 -
这能回答你的问题吗? Update statement with inner join on Oracle
标签: sql oracle sql-update inner-join