[英]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的某些复杂性,如此处所示:
您可以这样操作:
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.