【问题标题】:How to join blank table [duplicate]如何加入空白表[重复]
【发布时间】:2015-06-12 13:20:06
【问题描述】:

我想从我的 3 个表中获取所有行,其中一个是空的。

表 1:

Names  Numbers
Hello  123
Bye    123

表 2:

Names  Numbers
Xyz.   246

表 3:

Names  Numbers

表 3 不包含任何值

我希望结果包含这样的所有行:

Names  Numbers
Xyz.   246
Hello  123
Bye    123

【问题讨论】:

  • 使用UNION,而不是JOIN
  • Revision #3 彻底改变了这个问题,我已经回滚了。更多讨论见this chat transcript
  • 查看这个 OP 提出的问题.. 他们都是一样的
  • 这个问题和 OP 提出的重复问题完全是一场灾难。缺乏足够的细节来做出合理的回应,而且到处都是。这个人要么是巨魔,要么是我们无法提供帮助的人。
  • 如果编辑问题“AsConfused”的人代表“Abhishek Singh Confused”,那么好奇

标签: sql sql-server sql-server-2008


【解决方案1】:

我认为您正在寻找 Union all

select * from table1
union all
select * from table2
union all
select * from table3

加入用于合并列联合用于合并行

【讨论】:

    【解决方案2】:

    要获取所有这些值,您必须...获取所有记录:)

    SELECT Name, Numbers FROM Table1
    UNION 
    SELECT Name, Numbers FROM Table2
    UNION 
    SELECT Name, Numbers FROM Table3
    

    【讨论】:

    • 当心这个解决方案,由于隐含的不同,它在更大的表上可能会很慢。如果你能保证你不会有任何重复。最好使用 union all。
    【解决方案3】:
    1. 使用UNION 获取您独特的姓名列表
    2. 使用LEFT JOIN 检索您的数据

    例子:

    SELECT list.names, t1.assigned, t2.unsassigned, t3.closed, t4.open
    FROM 
       (select names from table1
        union select names from table2
        union select names from table3
        union select names from table4
       ) list
    LEFT JOIN table1 t1 ON (list.names = t1.names)
    LEFT JOIN table2 t2 ON (list.names = t2.names)
    LEFT JOIN table3 t3 ON (list.names = t3.names)
    LEFT JOIN table4 t4 ON (list.names = t4.names)
    

    【讨论】:

    • 检查问题的编辑历史 - 它只需要按照原始答案的联合,然后有人对其进行了编辑并完全改变了含义。需要回滚,但我没有足够的代表。
    • 4 个不同的人编辑了这个问题,其中 2 个的评分非常低(一个是 OP)——我猜 OP 有两个帐户,这是不允许的。我还假设“数字”更多地被用作数据类型而不是字段名称,并且存在的问题更有可能是最初的预期问题。
    • 现在回滚了。 OP以外的其他人认为两个不同的问题是重复的,但是当您查看它们时,它们是根本不同的。一个需要工会,另一个需要加入。不同数量的表格和不同的字段。审查队列中的某个人确实抓住了它并拒绝了它,但其他人只是通过机器人审查它。无论如何,现在都整理好了。
    猜你喜欢
    • 1970-01-01
    • 2015-05-26
    • 1970-01-01
    • 1970-01-01
    • 2012-12-21
    • 2020-11-12
    • 1970-01-01
    • 2016-01-14
    • 1970-01-01
    相关资源
    最近更新 更多