按日期排序行从多个表中收集?

nvbavucw  于 2021-06-21  发布在  Mysql
关注(0)|答案(2)|浏览(248)

例如,我有以下表格:
表一:

-------------------------
|   UID    |    Date      |
 -------------------------
|   John   |     2        |
|   mark   |     4        |
 -------------------------

表二:

-------------------------
|   UID    |    Date      |
 -------------------------
|   smith  |     1        |
|   Nork   |     3        |
 -------------------------

我期望的结果是按日期排序:

----------
|   smith  |
|   John   |
|   Nork   |
|   mark   |
 ----------

我试过:

(SELECT UID
  FROM table1 
  ORDER BY DATE DESC 
  LIMIT 16) 
UNION
(SELECT UID 
  FROM table2 
  ORDER BY DATE DESC 
  LIMIT 16)

但它打印的结果是,它首先得到表1和所有行,然后转到表2。

jjhzyzn0

jjhzyzn01#

我尝试使用mysql数据库,比如这些数据。它工作得很好。请试试这个:

SELECT t.UID FROM
         (SELECT t1.UID,t.DATE FROM table1 t1 
            UNION ALL
          SELECT t2.UID,t.DATE FROM table2 t2 
          ) as t
        ORDER BY t.DATE ASC
b0zn9rqh

b0zn9rqh2#

在查询中,分别对表中的每个结果集进行排序,以对检索到的行应用限制。
如果希望保留合并结果集的顺序,则需要再次应用它。为此使用子查询。你需要通过 date 为了能进一步做到这一点,我修改了 UNION 成为 UNION ALL 因为我们不需要在这个层次上应用它。在更高级别添加 DISTINCT 将照顾独特的价值观。

SELECT DISTINCT UID
FROM (
  (SELECT UID, DATE FROM table1 ORDER BY DATE DESC LIMIT 16)
  UNION ALL
  (SELECT UID, DATE FROM table2 ORDER BY DATE DESC LIMIT 16)
  ) t
ORDER BY DATE

相关问题