如何让我的查询显示从1到最大记录的所有记录

时间:2015-08-12 17:44:04

标签: sql oracle

有没有办法可以获得profile_id的最大值,而不是在where子句中写出最后一条记录36006。

SELECT profile_id, pe_in_flag, pe_out_flag, ce_in_flag,  ce_out_flag, profile_ind 
from COS_PROFILE
WHERE profile_id >= 1 AND profile_id <= 36006;

我尝试过此查询但无法正常工作

SELECT profile_id, pe_in_flag, pe_out_flag, ce_in_flag,  ce_out_flag, profile_ind 
from COS_PROFILE
WHERE profile_id <= max(profile_id); 

1 个答案:

答案 0 :(得分:1)

根据您在示例中构建查询的方式,没有理由检查最大值。它将自动成为表中返回的集合的隐含限制,其中max在其自身内的代理键上。如果您想要加入另一个表并使用&#34的最大值,那么&#34;用于限制从&#34;这个&#34;返回的集合的表表,然后你可以测试&#34;那&#34;最大可以解决问题。

按原样, - 假设profile_id的索引从1开始,解决此问题的最简单方法就是完全删除过滤器。

SELECT profile_id, pe_in_flag, pe_out_flag, ce_in_flag, ce_out_flag, profile_ind from COS_PROFILE

如果你想在这里引入明确的限制

SELECT profile_id, pe_in_flag, pe_out_flag, ce_in_flag, ce_out_flag, profile_ind from COS_PROFILE where profile_id >=1 AND profile_id <= (select max(profile_id) from COS_PROFILE)

但过滤器毫无意义。