在sql中实现取一行最大值或者最小值

 更新时间:2020年12月28日 15:24:34   作者:大大盒子  
这篇文章主要介绍了在sql中实现取一行最大值或者最小值,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧

原始数据和目标数据

实现SQL语句(最大)

select
shop,
month,
greatest(dz,fz,sp) as max
from
tablename;

实现SQL语句(最小)

select
shop,
month,
least (dz,fz,sp) as min
from
tablename;

补充:SQL Server获取一行中多列的最大值三种方法

有些时候我们需要从一个表的多个列中获取一个最大值(这些列的数据类型相同,并且是每一行记录都要获取一个最大值)。下面讲了三种方法,我们一起看下。

首先我们创建一个表,并在表中插入需要用到的记录,如下:

create table Demo(
 Guid varchar(50) not null default newid() primary key,
 Date1 datetime null,
 Date2 datetime null,
 Date3 datetime null
)

然后我们在表中插入测试数据

insert into Demo(Date1,Date2,Date3) values
('2016-9-5','2016-8-6','2016-10-9'),
('2015-5-6','2015-8-6','2015-6-3'),
('2016-10-6','2015-6-6','2016-9-6')

select * from Demo

我们需要获取上面每一行记录的三个日期列的最大值。

方法一(效率高):

select Guid,(select Max(NewDate) from (values (Date1),(Date2),(Date3)) as #temp(NewDate)) as MaxDate from Demo

方法二(效率高):

select Guid, max(NewDate) as MaxDate from Demo unpivot (NewDate for DateVal in (Date1,Date2,Date3)) as u group by Guid

方法三(效率低,不建议用):

select Guid, (select max(NewDate) as MaxDate from (select Demo.Date1 as NewDate union select Demo.Date2 union select Demo.Date3)ud) MaxDate from Demo

第一种方法使用values子句,将每行数据构造为只有一个字段的表,以后求最大值,非常巧妙;

第二种方法使用行转列经常用的UNPIVOT 关键字进行转换再显示;

第三种方法跟第一种方法差不多,但是使用union将三个UpdateByAppDate字段合并为只有一个字段的结果集然后求最大值。

以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。如有错误或未考虑完全的地方,望不吝赐教。

相关文章

  • mysql跨库事务XA操作示例

    mysql跨库事务XA操作示例

    这篇文章主要介绍了mysql跨库事务XA操作,结合实例形式分析了php+mysql实现跨库事务XA操作具体操作步骤与相关注意事项,需要的朋友可以参考下
    2019-04-04
  • 一文带你探究MySQL中的NULL

    一文带你探究MySQL中的NULL

    我们在日常工作中如果要接触Mysql数据库,那么不可避免会遇到Mysql中,下面这篇文章主要给大家介绍了关于MySQL中NULL的相关资料,文中通过示例代码介绍的非常详细,需要的朋友可以参考下
    2021-11-11
  • 一文教你快速学会使用DDL对数据库和表的操作

    一文教你快速学会使用DDL对数据库和表的操作

    SQL是一种操作关系型数据库的结构化查询语言,今天这篇文章将详细讲述数据定义语言DDL对数据库和表的相关操作,有感兴趣的同学跟着小编一起来学习吧
    2023-07-07
  • mysql数据库连接失败常见问题小结

    mysql数据库连接失败常见问题小结

    你有没有碰到过mysql数据库连接不上的问题呢?很多的小伙伴表示,经常会时不时的出现这些问题,下面这篇文章主要给大家介绍了关于mysql数据库连接失败常见问题的相关资料,需要的朋友可以参考下
    2023-06-06
  • mysqldump你可能不知道的参数

    mysqldump你可能不知道的参数

    这篇文章主要介绍了mysqldump你可能不知道的参数,帮助大家更好的理解和使用MySQL,感兴趣的朋友可以了解下
    2020-11-11
  • MySQL case when使用方法实例解析

    MySQL case when使用方法实例解析

    这篇文章主要介绍了MySQL case when使用方法实例解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2020-03-03
  • MySQL字符集 GBK、GB2312、UTF8区别 解决MYSQL中文乱码问题

    MySQL字符集 GBK、GB2312、UTF8区别 解决MYSQL中文乱码问题

    MYSQL中文乱码问题原因有很多,脚本之家以前发布过很多相关文章,这篇文章介绍mysql相关的一些知识更详细
    2012-08-08
  • Navicat连接mysql报错1251错误的解决方法

    Navicat连接mysql报错1251错误的解决方法

    这篇文章主要为大家详细介绍了Navicat连接mysql报错1251错误的解决方法,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2022-07-07
  • MySQL中的RIGHT JOIN和CROSS JOIN操作示例

    MySQL中的RIGHT JOIN和CROSS JOIN操作示例

    本文详细介绍了MySQL中的RIGHT JOIN和CROSS JOIN操作,RIGHT JOIN返回右表中的所有记录及与左表中的记录相匹配的记录,而CROSS JOIN返回两个表中所有可能的组合,通过实际示例和输出结果,我们展示了如何使用RIGHT JOIN和CROSS JOIN进行数据库查询,一起看看吧
    2023-07-07
  • Mysql 5.6添加修改用户名和密码的方法

    Mysql 5.6添加修改用户名和密码的方法

    这篇文章主要介绍了Mysql 5.6添加修改用户名和密码的方法,需要的朋友可以参考下
    2017-07-07

最新评论