如何在oracle中获取不同表的前十行



我有4个表,共有5列。我想获取这些表的最新前十行,并检索它们
我该怎么做?我尝试使用一个简单的联接命令,但我得到了20列,而不是5列!每个表都有自己的列名别名!但我想要的是,有一个5列的表格,其中包含所有前10名。

更新:

fetch FIRST 10 ROWS ONLY 

命令返回前10条记录,而不是最新的记录例如,当我运行以下命令时:

select * from tblTest order by ID FETCH First 3 ROWS Only;

我得到

1 Ali
2 Jacob
3 Chris

我真正需要的地方

18 Fatima
19 Mary
20 Catherina

我怎么能做到这样的事?

在Oracle12c中,您可以使用TOP-N查询:

SQL> select * from(
  2  (select deptno from emp
  3  ORDER BY deptno
  4  fetch FIRST 10 ROWS ONLY)
  5  UNION all
  6  (select deptno from emp
  7  ORDER BY deptno
  8  fetch FIRST 10 ROWS ONLY)
  9  )
 10  /
    DEPTNO
----------
        10
        10
        10
        20
        20
        20
        20
        20
        30
        30
        10
    DEPTNO
----------
        10
        10
        20
        20
        20
        20
        20
        30
        30
20 rows selected.

ROWNUM不同,您不必担心ORDER

更新关于订单中的最后记录

按顺序使用DESC

SQL> SELECT *
  2  FROM(
  3    (SELECT deptno FROM emp ORDER BY deptno DESC
  4    FETCH FIRST 3 ROWS ONLY
  5    )
  6  UNION ALL
  7    (SELECT deptno FROM emp ORDER BY deptno DESC
  8    FETCH FIRST 3 ROWS ONLY
  9    ) )
 10  /
    DEPTNO
----------
        30
        30
        30
        30
        30
        30
6 rows selected.
SQL>

您可以使用union all连续获取所有行,然后取前10行:

SELECT col1, col2, col3, col4, col5
FROM   (SELECT col1, col2, col3, col4, col5
        FROM    (SELECT col1, col2, col3, col4, col5 FROM table1
                 UNION ALL
                 SELECT col1, col2, col3, col4, col5 FROM table2
                 UNION ALL
                 SELECT col1, col2, col3, col4, col5 FROM table3
                 UNION ALL
                 SELECT col1, col2, col3, col4, col5 FROM table4)
        ORDER BY col1, col2, col3, col4, col5)
WHERE   rownum <= 10

相关内容

  • 没有找到相关文章

最新更新