【问题标题】:SQL : Join similar tables (different column order, different field names) into oneSQL:将相似的表(不同的列顺序,不同的字段名称)合并为一个
【发布时间】:2017-07-24 04:53:56
【问题描述】:

我有 3 个包含类似信息的文件,虽然每个文件都有自己的格式、列顺序、字段名称... 我想将这 3 个表合并为一个,以便能够对整个表进行分析。 我首先尝试通过使用 SQL Workbench 导入向导导入文件来直接执行此操作,将源文件中的每个字段分配到目标表中,但这不起作用。 所以现在,我已经在 SQL 中完整地导入了这 3 个表,并希望将它们合并。

例如

  • 表 1:日期、名称、金额、利率
  • 表 2:贷款日期、贷款名称、贷款金额、利息

想合并到:

  • 源文件(表明数据来自表 1 还是表 2),
  • 日期字段(使用表 1 中的日期或表 2 中的贷款日期),
  • 名称字段(使用表 1 中的名称或表 2 中的贷款名称),
  • 金额字段(使用金额或贷款金额),
  • 利率字段(使用利率或利息)

关于如何做到这一点的任何指导?

【问题讨论】:

    标签: mysql merge


    【解决方案1】:

    使用UNION 组合两个表:

    CREATE TABLE CombinedTable AS
    SELECT 'Table 1' AS `source file`, date, name, amount, `interest rate`
    FROM Table1
    UNION ALL
    SELECT 'Table 2', `loan date`, `loan name`, `loan amount`, interest
    FROM Table2
    

    【讨论】:

    • 谢谢,但很抱歉提出一个非常基本的问题:如果我的列名有 2 个单词,例如“利率”,我会收到一条 SQL 错误,提示未知列兴趣。我试图写利率(未知列利息“),“利率”(我在输出表中得到这两个词,而不是值),“利率”,Interest_Rate',InterestRate,似乎没有工作。还有当我开始输入兴趣,MySQL Workbench 建议我列名,所以我点击它,也不起作用。
    • 然后我的印象是,如果一张表这样调用利率,而另一张表称之为利息,我最终会得到 2 列利率和利息,而不是合并两者?
    • @cyrilmadrid 在包含任何特殊字符的名称周围使用反引号。
    • 你的印象是错误的。当您使用UNION 时,结果中的列名来自第一个子查询。
    【解决方案2】:

    你可以试试

    Insert into table3 (srcTable, Date, Name, Amount, InterestRate)
    (Select 'table1' as srcTable, Date, Name, Amount, InterestRate from Table1)
    Union
    (Select 'table2' as srcTable, LoanDate, LoanName, LoanAmount, Interest from Table2)
    

    其中 table3 是具有指定字段的新表

    【讨论】:

    • 我试图复制它,但得到错误 1064:SQL 错误。我写道:插入组合贷款(srcTable、贷款编号、贷款名称、贷款金额、年利率)(选择“assetzcapital_loanbook”作为 srcTable、贷款编号、贷款名称、贷款金额、来自assetzcapital_loanbook 的年利率)联合(选择“储蓄流_贷款簿”作为srcTable, Id, AssetDetails, Amount, Interest from Savingstream_loanbook)
    • 我试图简化到最大的写作:“插入组合贷款(LoanID)从assetzcapital_loanbook Union Select Loan # from Savingstream_loanbook”但是我回到了我对上一个回复的回答,它没有'不认识字段名
    • 您应该避免列名中出现特殊字符和空格。不使用这些字符,从头开始重试。
    • 可以,但我通过从网站导出这些文件,它们定义了列名。
    猜你喜欢
    • 2013-11-30
    • 1970-01-01
    • 2015-03-24
    • 1970-01-01
    • 1970-01-01
    • 2021-12-27
    • 2017-05-27
    • 2017-03-03
    • 2022-11-10
    相关资源
    最近更新 更多