我有表 x, y
表x
Id name. wage
1. A. 10
2. B. 12
3. C. 13
表y
Id. Bonus
1. 5
3. 6
我想创建另一个表,但包含表x的记录,但在工资中我想添加奖金,所以输出如下
Id name. wagebonus
1. A. 15
2. B. 12
3. C. 19
我试过了
insert into newtable
select id, name, wage+bonus from x, y
但是失败了
最佳答案
如果要创建新表,则需要 CREATE TABLE
命令,而不仅仅是 INSERT
。您的查询的另一个问题是,它没有考虑到一个人可能无法获得奖金的事实,因此您需要使用 LEFT JOIN
而不是 INNER JOIN
以确保 x
中的所有行最终都出现在新表中。这将执行您想要的操作:
CREATE TABLE newtable AS
SELECT x.Id, x.name, x.wage + COALESCE(y.bonus, 0) AS wagebonus
FROM x
LEFT JOIN y ON y.Id = x.Id;
SELECT * FROM newtable ORDER BY Id;
输出:
Id name wagebonus
1 A 15
2 B 12
3 C 19
请注意,为此创建一个新表可能有点过分了。您可以使用 VIEW
执行相同的操作,包括根据需要添加 ORDER BY
子句:
CREATE VIEW newview AS
SELECT x.Id, x.name, x.wage + COALESCE(y.bonus, 0) AS wagebonus
FROM x
LEFT JOIN y ON y.Id = x.Id
ORDER BY Id;
SELECT * FROM newview
输出与上面相同。
关于mysql - 如何复制另一个表的记录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56096232/