SQL INSERT INTO 从多个表

标签 sql sql-server

这是我的表 1:

NAME       AGE        SEX        CITY             ID

Clara      22         f          New York         1
Bob        33         m          Washington       2
Sam        25         m          Boston           3

这是我的表 2:

NUMBER       ID
555-1111     1
555-2222     2
555-3333     3

现在我想要一个表 3 来显示所有信息:

NAME       AGE        SEX        CITY             ID        NUMBER

Clara      22         f          New York         1         555-1111
Bob        33         m          Washington       2         555-2222
Sam        25         m          Boston           3         555-3333

我首先尝试仅将表 1 中的值插入表 3,然后使用内部联接将表 2 中的值插入表 3,其中 Id = Id。

INSERT INTO table3 { name, age, sex, city, id}
SELECT name, age, sex, city, id
FROM table 1



INSERT INTO table3 { name, age, sex, city, id, number}
SELECT name, age, sex, city, id, number
FROM table 2 p
INNER JOIN table 3 c ON c.Id = p.Id

但我得到的只是我值(value)观的重复。我没有 3 个条目,而是有 9 个条目,其中一些条目的数字为空,一些只有数字,其余的为空,还有一些是正确的。

希望有人能帮助我

编辑

如果我现在有第三个这样的表:

NATIONALITY       ID

Canadian          1
American          2
French            3

如何将所有 3 个表合并为一个表?

最佳答案

您只需要一个 INSERT:

INSERT INTO destinationTable( name, age, sex, city, id, number, nationality)
SELECT name, age, sex, city, s1.id, number, s3.nationality
FROM sourceTable1 s1
INNER JOIN sourceTable2 s2 ON s2.Id = s1.Id
INNER JOIN sourceTable3 s3 ON s3.Id = s1.Id

关于SQL INSERT INTO 从多个表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20404682/

相关文章:

python - 有时脚本闲置,需要我按 RETURN 才能解锁它们 - Python

MySQL 随机获取 10 行,其中 3 行预定义行需要成为结果的一部分并位于开头

c# - 不确定 linq to sql 查询的返回类型

sql-server - SQL Server 依赖标识 - 有这样的事情吗?

sql-server - 从 T-SQL 中的点创建地理多边形

c# - SQL 查询后存储主键

sql - 两个查询返回不同的数据

sql - 更改默认列值会导致 Hibernate 出现问题吗?

SQLite - 为每个字段创建和索引

mysql - 解析查询时如何区分 AS 关键字的使用