mysql - 按从多个表收集的日期对行进行排序?

标签 mysql sql mariadb

例如我有下表:

表一:

 -------------------------
|   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)

但它打印的结果是,它首先获取 table1 及其所有行,然后再获取 table2。

最佳答案

在查询中,您可以单独对表中的每个结果集进行排序,以对检索到的行应用限制。

如果您想保留合并结果集的顺序,则需要再次应用它。为此目的使用子查询。您需要进一步传递 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

关于mysql - 按从多个表收集的日期对行进行排序?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50497171/

相关文章:

mySQL 命令行工作但 ODBC 和工作台不工作

mysql - 创建过程时出现语法错误

MySQL JSON_MERGE/REPLACE。如何实际更新值而不是合并

mysql - SQL 查询 - 使用带有限制的 SUM 函数进行选择

mysql - 为什么我的查询不是最优的?

c# - 添加到数据库 : parameter not supplied but it's not required in SQL column

sql - 表中具有特定列总和的行

php - MySQL 查询在 SQL pro 中工作正常,但在 mysqli_query 中工作不正常

mysql - MySQL 中 ha_sequence 插件的使用

mysql - MariaDB 中密码/登录路径的存储位置(相当于 mysql-config-editor)?