【问题标题】:How can we order a union query in MySQL? [duplicate]我们如何在 MySQL 中订购联合查询? [复制]
【发布时间】:2013-07-23 17:14:32
【问题描述】:

我在 MYSQL 中有一个如下所示的存储过程:

    (SELECT 1 AS sort_col, col_a, col_b FROM t1 WHERE col_b LIKE %some% AND col_b LIKE %thing%)
    UNION
    (SELECT 2, col_a, col_b FROM t1 WHERE col_b LIKE %some% OR col_b LIKE %thing%)
 ORDER BY sort_col, col_a;

我希望首先显示第一个选择的结果,但是第一个的一些结果在第二个中也很常见,第二个选择将它们的 sort_col 更改为 2。(我不能在我的选择中使用 LIMIT) 有什么办法可以解决?

【问题讨论】:

    标签: mysql sql sorting select sql-order-by


    【解决方案1】:

    使用子查询:

    SELECT * FROM
    (
       (SELECT 1 AS sort_col, col1a, col1b FROM t1)
       UNION
       (SELECT 2, col2a, col2b FROM t2)
    ) tbl 
    ORDER BY sort_col, col1a;
    

    编辑(OP's edit 之后)

    SELECT * FROM
    (
      (SELECT 1 AS sort_col, col_a, col_b 
         FROM t1 
        WHERE col_b LIKE %some% 
          AND col_b LIKE %thing%)
      UNION
      (SELECT 2, col_a, col_b 
         FROM t1 
        WHERE col_b LIKE %some% 
           OR col_b LIKE %thing%)
    ) tbl
    ORDER BY sort_col, col_a;
    

    【讨论】:

    • tnx 但它不起作用!
    • @Highlan - 它应该是这样工作的。请出示您的样本数据和预期结果。
    • 请再看一遍我编辑的问题。
    • @Highlan - 查看我的更新答案。
    • 因为第一个选择的一些结果在第二个中也有共同点,所以 sort_col 不能正常工作!
    猜你喜欢
    • 1970-01-01
    • 2013-01-17
    • 2023-03-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-12-25
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多