sql 语句 获取最大值

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了sql 语句 获取最大值相关的知识,希望对你有一定的参考价值。

表数据如下,我现在要获取同类型中最大的一个请问该怎么操作?
这样写得出的结果是否不妥?在什么时候会有bug?
select max(Aid) from ApIn where aId like 'SQ801%'
select Aid from ApIn where aId like 'SQ801%' order by Aid desc
坐等高人
回二楼
我是要获取同类型中最大的,没有like 不行
注:类型为 SQ801 SQ802 。。。。
我觉得这样比较安全
select aId = max(cast(right(aId,4) as int)) from ApIn where aId like 'SQ801%'

sql 语句获取一列中的最大值使用MAX() 函数

一、MAX() 函数返回指定列的最大值。

二、SQL MAX() 语法:

SELECT MAX(column_name) FROM table_name;

三、参数解释

column_name:列名

table_name:表名

扩展资料

最小值语句

MIN() 函数

MIN() 函数返回指定列的最小值。

SQL MIN() 语法

SELECT MIN(column_name) FROM table_name;

参考资料:百度百科-SQL MAX

参考技术A

sql 语句 获取一列中的最大值使用MAX() 函数

一、MAX 函数功能:返回一列中的最大值。NULL 值不包括在计算中。

二、SQL MAX() 语法:

SELECT MAX(column_name) FROM table_name

注释:MIN 和 MAX 也可用于文本列,以获得按字母顺序排列的最高或最低值。

三、检索aid字段的最大值语句:

select max(aid) as '最大值' from aaa;

结果如图:

扩展资料:

SQL语言,是结构化查询语言(Structured Query Language)的简称。SQL语言是一种数据库查询和程序设计语言,用于存取数据以及查询、更新和管理关系数据库系统;同时也是数据库脚本文件的扩展名。

SQL语言,是结构化查询语言(Structured Query Language)的简称。SQL语言是一种数据库查询和程序设计语言,用于存取数据以及查询、更新和管理关系数据库系统;同时也是数据库脚本文件的扩展名。

参考技术B

sql 语句 获取一列中的最大值使用MAX() 函数

一、MAX 函数功能:返回一列中的最大值。NULL 值不包括在计算中。

二、SQL MAX() 语法:

SELECT MAX(column_name) FROM table_name

注释:MIN 和 MAX 也可用于文本列,以获得按字母顺序排列的最高或最低值。

三、例表格:aaa,表结构如图

检索aid字段的最大值语句:

select max(aid) as '最大值' from aaa;

结果如图:

参考技术C select max(Aid) from ApIn where aId like 'SQ801%'
select top 1 Aid from ApIn where aId like 'SQ801%' order by Aid desc
只要aid列的位数是一致的,以上两条语句都可以得到你要的结果
否则如果aid列的位数不一致,以上两条语句都有可能得出的结果不是你要的
-----
如果不信你可以找些数据测试下本回答被提问者采纳
参考技术D 若是只是根据你的输入条件来查指定某一类型的话,则用你的写法就可以:

select max(Aid) from ApIn where aId like 'SQ801%'
select Aid from ApIn where aId like 'SQ801%' order by Aid desc

但前提是你所指的"同类型"必须是以"前5位"来分类的.

若要显示所有以"前5位"来分类各分类的最大值,则这样写:
select left(Aid,5) as type_Aid, max(Aid) as Type_Max_Aid
from ApIn
group by left(Aid,5)

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

【中文标题】结合排序、选择进入和 where 语句以在 oracle sql 中查找最大值【英文标题】:combining a sort, select into, and where statement to find a max value in oracle sql 【发布时间】:2013-08-04 02:29:37 【问题描述】:

我正在尝试执行 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) 来检查该值。当我将顺序更改为 ASCENDING 我的值更改时,所以我知道发生了一些事情。但是为什么我不能得到正确的最大值?我觉得排序一定没有正确完成。

谢谢!

【问题讨论】:

我面前没有oracle,但你试过SELECT max(stdid) INTO v_stdid 感谢 Nilesh - 我试过了,但仍然得到错误的值(9 而不是 32)。 嗨,Nilesh - 现在 max 可以工作了。 :) 我试图在 varchar 值上使用 max,所以这让我很困惑。我使用了它并且它起作用了: select max(to_number(stdid)) into v_stdid from student;再次感谢! +1 - 找到自己的答案 ORDER BY function not working in Oracle的可能重复 【参考方案1】:

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

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

我相信这可以消除您遇到的问题,方法是将第二次选择的前 1 个结果的 stdid 返回到 v_stdid,而不必担心 NUMROW 所具有的一些复杂性,如下所示:

Selecting the second row of a table using rownum

【讨论】:

感谢 Mattpic - 不幸的是不能使用 TOP 关键字。这似乎是针对 SQL Select 的。我发现一篇文章说,相当于 TOP 的 Oracle 正在使用 ROWNUM,但就像您提供的链接指出的那样,ROWNUM 会产生自己的问题。 很高兴我能提供帮助,但没有意识到您使用的是 Oracle。简单的解决方法,但是如果您将 ROWNUM 放在括号内,是否可以解决问题? 将 ROWNUM 添加到子查询也不起作用,因为它在排序之前应用,因此子查询不会重新调整最大值。【参考方案2】:

你可以这样做:

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;

【讨论】:

以上是关于sql 语句 获取最大值的主要内容,如果未能解决你的问题,请参考以下文章

Doctrine Query Language 获取每组的最大/最新行

SQL语法怎么取得一个字段的最大值

sql查询时间最小值的列

获取每个月 SQL 的组的 MAX 值

sql语句单据编号生成防并发

SQL语句获取列最长字符串的长度