假设我们有两个带有id和timestamp列的表。 我们如何有选择地按时间戳的顺序显示两个表中前10个记录的ID。
例如,我们在table1中创建了一条记录,然后我们在table2中创建了一条记录,然后我们在table1中创建了一条记录,然后我们在table2中创建了一条记录........等等。
答案 0 :(得分:3)
根据您的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
祝你好运。
答案 1 :(得分:1)
我不确定这是否是你要找的。这将在MySql中起作用:
SELECT 'table1' tab, id, timestamp
FROM table1
UNION ALL
SELECT 'table2' tab, id, timestamp
FROM table2
ORDER BY timestamp DESC
LIMIT 10
并将选择在table1
或table2
之一中插入的最后10条记录。这将在SQL Server中起作用:
SELECT TOP 10 * FROM (
SELECT TOP 10 'table1' tab, id, timestamp
FROM table1
ORDER BY timestamp DESC
UNION ALL
SELECT TOP 10 'table2' tab, id, timestamp
FROM table2
ORDER BY timestamp DESC ) t
ORDER BY timestamp DESC