gpt4 book ai didi

mysql - 如何复制另一个表的记录

转载 作者:行者123 更新时间:2023-11-29 09:43:44 27 4
gpt4 key购买 nike

我有表 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

输出与上面相同。

Demo on dbfiddle

关于mysql - 如何复制另一个表的记录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56096232/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com