1

id 列と timestamp 列を持つ 2 つのテーブルがあるとします。両方のテーブルの最初の 10 レコードの ID をタイムスタンプ順に選択的に表示するにはどうすればよいでしょうか。

たとえば、最初に table1 にレコードを作成し、次に table2 にレコードを作成し、次に table1 にレコードを作成し、次に table2 にレコードを作成したとします。

4

2 に答える 2

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

幸運を。

于 2013-01-22T14:51:36.200 に答える
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または のいずれかに挿入された最後の 10 レコードが選択されますtable2。これは 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
于 2013-01-22T15:59:59.807 に答える