mysql - 如何按创建时间顺序选择性地显示两个表中的记录

标签 mysql sql sql-server database oracle

假设我们有两个包含 id 和 timestamp 列的表。 我们如何按照时间戳的顺序有选择地显示两个表中前 10 条记录的 id。

例如,首先我们在表 1 中创建了一条记录,然后我们在表 2 中创建了一条记录,然后我们在表 1 中创建了一条记录,然后我们在表 2 中创建了一条记录......等等。

最佳答案

根据您的 RDBMS,您可以使用 ROWNUM、LIMIT,或使用 Row_Number() OVER (ORDER BY datefield DESC) 创建您自己的 Row_Number。

这可能有效(对于 Oracle)。

select *
from  
( select id, datefield from Table1 
   union select id, datefield From Table2 order by datefield desc )  t
where ROWNUM <= 10;

对于 MySQL:

select *
from  
( select id, datefield from table 
   union select id, datefield from table2 ) t
order by datefield desc
limit 10;

对于 SQL Server:

select * 
from
(
    select *, Row_Number() OVER (ORDER BY datefield DESC) as rown
    from  
    ( select id, datefield from table 
       union select id, datefield from table2 ) t
 ) t2
 where rown <= 10

祝你好运。

关于mysql - 如何按创建时间顺序选择性地显示两个表中的记录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14461290/

相关文章:

php - 如何在php和mysql中添加图片上传?

SQL 服务器 : Update table based on JSON

c# - 将 SQL NVARCHAR 的值返回到 C# 字符串

PHP mssql_connect() 到 Azure 数据库

sql-server - Azure Data Studio 不记得或保留连接

php - 循环逻辑 PHP 出错

php - MySQL:如果所有值都存在则返回真

mysql - 在 GAE 应用中更改 Cloud SQL block_encryption_mode

java - 根据另一个字符串删除字符串的一部分

sql - SQL Server是否默认在表的所有列上创建非聚集索引