【问题标题】:Appending one sql query with another将一个 sql 查询附加到另一个
【发布时间】:2010-08-26 17:43:45
【问题描述】:

我有一个绑定 sql 选择的数据读取器(表 1 中有 10 列),我想将另一个表 2 中的 5 个不同列附加到第一个 sql 选择,我不能做 UNION,因为它有不同的列数,(一个查询有 10 个,另一个返回 5 个列)。

还有其他方法可以通过 mysql 实现吗?

我还需要根据条件附加额外的 5 列,是否可以通过 mysql select 查询在 select 查询中使用 if then 来编写?

谢谢。

【问题讨论】:

    标签: sql mysql union


    【解决方案1】:

    与空值联合怎么样?下面的查询将删除两个数据集之间的重复项。

    SELECT col1,col2,col3,col4
    FROM table1
    UNION ALL
    SELECT col1,col2,null,null
    FROM table2
    

    如果您想删除每个数据集中的重复项,请使用以下查询:

    SELECT DISTINCT col1,col2,col3,col4
    FROM table1
    UNION ALL
    SELECT DISTINCT col1,col2,null,null
    FROM table2
    

    你可以在 col1 和 col2 之后使用任何你想要的默认值。

    null、'none'、'' 都应该有效。

    【讨论】:

    • 请记住,您可能想要 UNION ALL,而不是 UNION
    • 由于第二个查询中的空值,结果会不会相同?
    • 谢谢Abe,有没有什么办法可以去掉重复项并显示不为null的条目值?
    • 您可以使用 UNION ALL 而不是 UNION 来删除两个数据集之间的重复项。 “显示不带空值的条目值”是什么意思?我已更新查询以使用 UNION ALL
    • 我在 mysql 查询中有这个条件 SELECT col1,col2,col3,col4 FROM table1 -> 我选择的这个产生 5 行 (R1,R2,R3,R4,R5) 其中 (C1,c2, c3 为空) UNION SELECT col1,col2,null,null FROM table2; -> 此 II 选择产生 2 行 (R4,R5) 其中 (C1,c2,c3 不为空) 有没有办法删除重复项并显示不为空的条目值?我想发送总共 5 行的查询结果,其中包含最后 2 行的值,而不是总共 7 行。
    猜你喜欢
    • 1970-01-01
    • 2017-05-29
    • 1970-01-01
    • 2021-08-30
    • 2020-04-25
    • 1970-01-01
    • 2021-12-14
    • 2020-02-02
    • 2012-06-06
    相关资源
    最近更新 更多