浅用mysql比较函数
来源:互联网 发布:java collection用法 编辑:程序博客网 时间:2024/05/14 08:56
今天在操作数据库时,遇到一个问题:修改表中某条数据,比较某个字段原有值和修改值,如果原有值大于修改值,则这个字段不修改,从而引出了是用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比较函数
- mysql 时间比较函数
- mysql字符串比较函数
- mysql函数之比较函数
- mysql函数之比较函数
- MySQL基础知识---------字符串比较函数
- mysql和oracle函数比较
- mysql 和oracle的函数比较
- mysql 日期比较及日期函数用法
- MySQL与Oracle 差异函数比较
- mysql 和oracle的函数比较
- MySQL与Oracle 函数差异比较
- MySQL与Oracle 差异比较之函数
- MySQL比较运算符和函数
- mysql oracle 日期时间函数比较
- MySQL中的时间比较日期转换函数
- mysql 比较运算符和函数
- 指针,指针,又见指针
- 使用execvp()函数需要注意的两点
- hibernate jdbc连接
- Boost Python 包装C++函数供Python使用时返回值为引用类型的解决方案
- stocks
- 浅用mysql比较函数
- Flex AIR 系统托盘于右键托盘菜单的实现
- vim ctags
- ESET NOD32 Antivirus 5
- 淘宝校园招聘笔试题
- 使应用程序常驻内存,不能被任务管理器关闭之配置文件设置
- 成功创办一个公司究竟需要多少钱?
- jquery getjson 记录一下,我每每做这个东东都会忘记他
- 进程 查杀