今天在操作数据库时,遇到一个问题:修改表中某条数据,比较某个字段原有值和修改值,如果原有值大于修改值,则这个字段不修改,从而引出了是用mysql的比较函数;
举个例子,我现在有一个users表,其中字段分别为id,name,age,sex,id是key。
表中原有数据如下:
+----+------+------+------+
| id | name | age | sex |
+----+------+------+------+
| 16 | yang | 5 | s |
| 17 | hang | 4 | m |
我想修改id=16的用户的年龄,如果要现今age的值是大于插入数据的值,则不修改。这时我们可以使用mysql的比较函数greatest函数,sql语句为:“ update users set age=greatest(age,10) where id=16”,修改后数据表如下:
+----+------+------+------+
| id | name | age | sex |
+----+------+------+------+
| 16 | yang | 10 | s |
| 17 | hang | 4 | m |
如果使用on duplicate key update也是能执行的。如 insert into users (id,name,age,sex) values(16,'tang',12,sex='f') on duplicate key update name='tang',age=greatest(age,16),sex='f';
这句语句是向表中插入数据,如果已存在此key,则修改这条数据(on duplicate key update的用法),执行结果如下:
+----+------+------+------+
| id | name | age | sex |
| 16 | tang | 16 | f |
| 17 | hang | 4 | m |
同理select中也是可以用的。此外比较函数还有least。
来自mysql文档中的说明:
GREATEST(value1,value2,...)当有2或多个参数时,返回值为最大(最大值的)参数。
LEAST(value1,value2,...)
在有两个或多个参数的情况下, 返回值为最小 (最小值) 参数。
用一下规则将自变量进行对比:
-
- 假如返回值被用在一个 INTEGER 语境中,或是所有参数均为整数值,则将其作为整数值进行比较。
- 假如返回值被用在一个 REAL语境中,或所有参数均为实值,则 将其作为实值进行比较。
- 假如任意一个参数是一个区分大小写的字符串,则将参数按照区分大小写的字符串进行比较。
- 在其它情况下,将参数作为区分大小写的字符串进行比较。
假如任意一个自变量为NULL,则GREATEST()和 LEAST()的返回值为NULL 。
mysql> SELECT LEAST(2,0);
-> 0
mysql> SELECT LEAST(34.0,3.0,5.0,767.0);
-> 3.0
mysql> SELECT LEAST('B','A','C');
-> 'A'
暂时用到这么多,后面用上继续补上。
分享到:
相关推荐
《MySQL深入浅出》这份讲义全面覆盖了MySQL的基础知识,包括SQL语法、运算符、函数、字符类型以及存储过程等多个重要主题。以下是对这些关键知识点的详细解释: 1. **SQL基础**:SQL(Structured Query Language)...
MySQL自定义函数是数据库系统中一个非常实用的功能,允许用户根据特定需求编写自己的函数,以扩展MySQL的标准功能集。在上述描述中,我们看到如何创建一个简单的MySQL自定义函数,名为`onlineFunction`,用于根据...
mysql> select IFNULL(1,0); -> 1 mysql> select IFNULL(0,10); -> 0 mysql> select IFNULL(1/0,10); -> 10 mysql> select IFNULL(1/0,'yes'); -> 'yes' IF(expr1,expr2,expr3) 如果expr1是TRUE(expr1<>0
浅谈Mysql中类似于nvl()函数的ifnull()函数 IFNULL()函数是Mysql中一个非常有用的函数,它可以用来检查某个表达式是否为空,如果为空则返回另一个表达式的值。IFNULL()函数的语法为IFNULL(expr1, expr2),其中...
《MySQL排错指南》由Oracle公司的技术支持工程师编写,详细阐述了MySQL故障诊断及处理中的知识,教会读者如何深入浅出地定位、分析并解决各种MySQL数据库的故障。 《MySQL排错指南》共分为7章,其内容涵盖了解决...
7.MySQL中的字符串比较函数 8.MySQL中字符串函数详细介绍 9.都出深入SELECT语句的查询功能 10.浅谈MySQL存储引擎选择InnoDB还是MyISAM 11.浅谈unique列上插入重复值的MySQL解决方案 12.深入了解MySQL 5.5分区功能...
这是因为`mysql_free_result()`函数是用来释放由`mysql_query()`产生的结果集资源,以防止内存泄漏。但是,对于不返回结果集的SQL语句,调用`mysql_free_result()`是没有必要的,因为没有结果集需要释放。在这种情况...
答案是肯定的,MySQL 提供了 `IFNULL` 函数,它与 Oracle 的 `NVL` 函数具有相似的功能。 `NVL` 函数是 Oracle 数据库特有的,它的基本用法是 `NVL(expression1, expression2)`。如果 `expression1` 为 NULL,`NVL`...
MySQL深入浅出入门基础讲义 本资源摘要信息是关于MySQL数据库的基础知识讲义,适合新入门程序员使用。下面是对标题、描述、标签和部分内容的详细解释和知识点总结。 标题解释 MySQL深入浅出入门基础讲义是关于...
存储过程和函数是数据库中封装的代码块,允许存储复杂的逻辑并能够被重复使用。触发器则是响应数据库表中的数据变化(如INSERT、UPDATE、DELETE)而自动执行的一段代码。它们可以有效地帮助管理和维护数据库的完整性...
本文将深入探讨SQL Server的`ISNULL`函数和MySQL的`IFNULL`函数,帮助读者理解和掌握它们的用法。 **SQL Server的ISNULL函数** `ISNULL`函数在SQL Server中用于检查一个表达式是否为NULL,并根据需要替换为指定的...
除了`CONCAT()`和`CONCAT_WS()`,MySQL还提供了`GROUP_CONCAT()`函数,它主要用于聚合查询,将一组记录中的某个字段值合并成一个字符串,每个值之间用指定的分隔符分隔。例如,在表`aa`中,我们可以按`id`字段分组,...
这个压缩包包含的是四个重要的IT资源,分别是PHP5中文函数手册、MySQL中文参考手册、CSS2.0中文手册以及JavaScript中文手册。这些手册是学习和掌握这四种技术的基础工具,对于开发者来说尤其宝贵。 首先,PHP5中文...
本文将通过具体的示例,深入浅出地讲解MySQL8.0窗口函数的基本用法。 首先,我们需要了解什么是窗口函数。窗口函数允许我们在一个结果集(窗口)内执行计算,这个窗口可以是整个查询结果,也可以是根据特定条件定义...
本教程旨在深入浅出地介绍MySQL 5.6的各个方面,包括但不限于其安装、配置、管理以及使用。 首先,关于MySQL 5.6官方手册,它详细记录了从MySQL 5.6到5.6.28的版本内容,以及基于NDB 7.3和7.4版本的MySQL Cluster的...
14-伪哈希函数降低索引长度.wmv 15-大数据量分页优化.wmv 16-索引与排序.wmv 17-冗余索引与重复索引.wmv 18-索引碎片修复.wmv 19-Explain分析SQL效果.wmv 20-In型子查询陷阱.wmv 21-Exists一定比子查询慢吗.wmv 22-...
存储过程、函数和触发器能够帮助我们封装复杂的操作,避免在应用层重复编写相同的代码。它们的定义、特点和使用也是面试官常问的内容。 在SQL语句的类别、六种关联查询、子查询、数据类型的区别、数据操作语句以及...