删除select中的最后一行

时间:2012-12-14 08:19:22

标签: sql oracle select

如何从选定数据中删除最后一行。我需要对数据进行排序并对其进行排序。但最后一行从未使用过。也许有人知道一个例子吗?

4 个答案:

答案 0 :(得分:5)

你可以试试这个

with t as (select 1 field from dual
union all 
select 2 from dual)

select * from (
  select count(*) over(order by field desc) cnt, t.* from t
) 
where cnt != rownum

答案 1 :(得分:1)

如果您的问题类似MySQL: How to select all rows from a table EXCEPT the last one,请查看此问题,并在此处查看此代码

SELECT * FROM TABLE WHERE ID != (SELECT MAX(ID) FROM TABLE)

这里“ID!=(SELECT MAX(ID)FROM TABLE)”这部分切断了序列中编号最大的最后一行(为此,你必须声明一个整数字段(ID),它将是auto_increment。该字段将通过MAX(ID))给出最后一行记录的最大值

答案 2 :(得分:1)

鉴于您有一些返回特定行数的查询,您可以使用COUNT(*)OVER()来查找它返回的行数。要消除最后一行,您必须将查询推送到子查询并过滤ROWNUM ...

select ...
from   (select   count(*) over () total_rows,
                 ...
        from     ...
        where    ...
        order by ...)
where   rownum < total_rows

答案 3 :(得分:-1)

试试这个

select * from table
where rowid<>(select max(rowid) from table);

select * from table
minus
select * from table where rownum = (select count(*) from table)