所以我想使用其他两个表通过选择将新列添加到表中。我尝试过这样的查询:
ALTER TABLE order ADD cost DECIMAL(5,2) AS (SELECT SUM(price*pieces) FROM book JOIN details ON id_book=book_id GROUP BY order_id);
我收到错误:
错误1064(42000):您的SQL语法有错误;检查与您的MySQL服务器版本相对应的手册以获取正确的语法,以在'第1行的id_book = book_id group by order_id的书本联接详细信息中选择'select sum(price * pieces)'附近使用>
我的其他表格如下:
CREATE TABLE details ( id_d INT(10) NOT NULL AUTO_INCREMENT, book_id INT(10) DEFAULT NULL, order_id INT(10) DEFAULT NULL, pieces INT(10) DEFAULT NULL ...
CREATE TABLE book ( id_book INT(10) NOT NULL AUTO_INCREMENT, price DECIMAL(5,2) DEFAULT NULL, ...
此
SELECT SUM(price*pieces) FROM book JOIN details ON id_book=book_id GROUP BY order_id;
有效,但我真的不知道如何将其添加为新列:(
所以我想使用其他两个表通过选择将新列添加到表中。我尝试过这样的查询:ALTER TABLE订单添加成本DECIMAL(5,2)AS(从书中加入SELECT SUM(price * pieces ... ...)>
您无法指定数据填充ALTER TABLE
语句中的列。这需要在单独的UPDATE
语句中完成。
ALTER TABLE order ADD cost DECIMAL(5,2) DEFAULT 0;
UPDATE order AS o
JOIN (
SELECT d.order_id, SUM(d.pieces, * b.price) AS cost
FROM details AS d
JOIN book AS b ON d.book_id = b.id_book
GROUP BY d.order_id) AS d ON d.order_id = o.order_id
SET o.cost = d.cost