在sql中选择n行

fac*_*ook 0 sql oracle

我有一张桌子

Country | Capital
----------------------
France  |  Paris
Germany | Berlin
USA     | Washington
Russia  | Moscow.
Run Code Online (Sandbox Code Playgroud)

我需要选择除第一行之外的所有行.表没有主键.我该怎么办?

a_h*_*ame 5

SELECT *
FROM (
   SELECT country, capitol, rownum as rn
   FROM your_table
   ORDER BY country
) 
WHERE rn > 1
Run Code Online (Sandbox Code Playgroud)

如果未按国家/地区排序定义"第一个",则需要ORDER BY在内部查询中应用不同的内容.

编辑

为了完整起见,ANSI SQL解决方案将是:

SELECT *
FROM (
   SELECT country, 
          capitol, 
          row_number() over (order by country) as rn
   FROM your_table
) 
WHERE rn > 1
Run Code Online (Sandbox Code Playgroud)

这是一种适用于几乎所有主要DBMS的便携式解决方案