我有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
但是失败了
答案 0 :(得分:1)
如果要创建新表,则需要一个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
输出与上面相同。