【问题标题】:Create new table from current table inner joining 6 tables从当前表内部连接 ​​6 个表创建新表
【发布时间】:2017-02-10 16:14:39
【问题描述】:

我对 SQL 很陌生,所以如果我的查询看起来不完美,我提前道歉。我正在尝试为此语句创建一个新表。我在主键上加入了 6 个表。我尝试将表创建为(但它不起作用)。如果有人能取悦我,将不胜感激!

SELECT *      
FROM DATABASE.Table1
INNER JOIN DATABASE.Table2
ON DATABASE.Table1.PrimaryKey = DATABASE.Table2.PrimaryKey
INNER JOIN DATABASE.Table3
ON DATABASE.Table1.PrimaryKey = DATABASE.Table3.PrimaryKey
INNER JOIN DATABASE.Table4
ON DATABASE.Table1.PrimaryKey = DATABASE.Table4.PrimaryKey
INNER JOIN DATABASE.Table5
ON DATABASE.Table1.PrimaryKey = DATABASE.Table5.PrimaryKey
INNER JOIN DATABASE.Table6
ON DATABASE.Table1.PrimaryKey = DATABASE.Table6.PrimaryKey
WHERE PrimaryKey = ‘1’

【问题讨论】:

  • 可能会给你 ambiguous column 错误。你应该选择你需要明确的列
  • does not work 没有帮助,发布错误消息。正确的选项是CREATE TABLE AS ,因此最好显示竞争查询。但是我与 GurV 一起使用该查询,您将有六个字段称为 "PrimaryKey"

标签: sql create-table


【解决方案1】:

所以您想要一个包含每个源表中所有字段的表,对吗?您可以使用 SELECT.... INTO:

SELECT [Field List] INTO MyNewConsolidatedTable      
FROM DATABASE.Table1
INNER JOIN DATABASE.Table2
ON DATABASE.Table1.PrimaryKey = DATABASE.Table2.PrimaryKey
INNER JOIN DATABASE.Table3
ON DATABASE.Table1.PrimaryKey = DATABASE.Table3.PrimaryKey
INNER JOIN DATABASE.Table4
ON DATABASE.Table1.PrimaryKey = DATABASE.Table4.PrimaryKey
INNER JOIN DATABASE.Table5
ON DATABASE.Table1.PrimaryKey = DATABASE.Table5.PrimaryKey
INNER JOIN DATABASE.Table6
ON DATABASE.Table1.PrimaryKey = DATABASE.Table6.PrimaryKey
WHERE PrimaryKey = ‘1’

请注意,您需要替换 [Field List] 并枚举新表中所需的所有字段,否则您将有 6 个称为 PrimaryKey 的字段,SQL 不允许这样做。

【讨论】:

    猜你喜欢
    • 2012-06-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-05-29
    • 1970-01-01
    • 1970-01-01
    • 2011-10-09
    • 1970-01-01
    相关资源
    最近更新 更多