繁体   English   中英

结合排序,选择入和where语句以在oracle sql中找到最大值

[英]combining a sort, select into, and where statement to find a max value in oracle sql

我正在尝试执行select into语句以从列中获取最大值。 这就是我所拥有的:

   SELECT stdid INTO v_stdid 
   FROM (SELECT stdid FROM STUDENT ORDER BY stdid DESC)
   WHERE ROWNUM = 1;

我没有得到正确的值。 它应该是32,但是返回9(我有一个dbms_output_line(v_stdid)来检查值。当我更改顺序以升序更改我的值更改时,所以我知道发生了什么。但是为什么我不能得到正确的最大值?我觉得排序一定不能正确完成。

谢谢!

看来TOP关键字可能对您有所帮助。

SELECT stdid INTO v_stdid
FROM (SELECT TOP 1 FROM STUDENT ORDER BY stdid DESC);

我相信这可以通过将第二个选择的前1个结果的stdid返回到v_stdid来消除您所遇到的问题,而不必担心NUMROW的某些复杂性,如此处所示:

使用rownum选择表的第二行

您可以这样操作:

SELECT max(stdid) INTO v_stdid 
FROM STUDENT;

但是,我相信您的问题是stdid被存储为字符而不是数字。 因此,将其转换为整数:

select max(cast(stdid as int)) into v_stdid
from student;

这也适用于您的原始公式:

SELECT stdid INTO v_stdid 
FROM (SELECT stdid FROM STUDENT ORDER BY cast(stdid as int) DESC)
WHERE ROWNUM = 1;

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM