【问题标题】:Pull from two different tables and order从两个不同的表中提取并订购
【发布时间】:2012-06-29 05:05:06
【问题描述】:
TABLE 1
id  time1   info
1   110 info1
2   120 info2

TABLE 2
id  time2   info
1   100 info3
2   130 info4

如何同时从两个表中提取数据并按 time1 和 time2 排序(相同,但字段名称不同)

Expected result row ids:
1 // table 2
1 // table 1
2 // table 1
2 // table 2

【问题讨论】:

    标签: mysql


    【解决方案1】:

    您应该使用UNION JOIN 查询,为公共排序列(time1 和 time2)设置别名,使其具有相同的名称并对整个重新组合的结果集进行排序。

    (SELECT id, time1 AS time, info FROM table1)
        UNION
    (SELECT id, time2 AS time, info FROM table2)
        ORDER BY time
    

    不幸的是,这意味着无法为每个表返回不同的表结构。他们必须匹配列数等。

    解决方法是这样的:

    (SELECT id, time1 AS time, info, extra_column FROM table1)
        UNION
    (SELECT id, time2 AS time, info, NULL AS extra_column FROM table2)
        ORDER BY time
    

    【讨论】:

    • 还有一件事。例如,如果我需要从 table1 返回一个额外的列怎么办(table2 没有这样的列)。
    • 非常感谢,在您发布此内容时发现了“NULL AS 列”部分 :)
    猜你喜欢
    • 1970-01-01
    • 2012-03-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-04-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多