一个关于MYSQL IFNULL的用法

select a.receiveID,(a.num - IFNULL(b.num,0)) as num
from (SELECT num,receiveID from dog_giftnumrecord where giftID = 1) as a
left join (SELECT num,receiveID from dog_giftnumrecord where giftID = 2 ) as b
on a.receiveID = b.receiveID

  

--
-- 表的结构 `dog_giftnumrecord`
--

CREATE TABLE IF NOT EXISTS `dog_giftnumrecord` (
  `id` int(11) unsigned NOT NULL AUTO_INCREMENT COMMENT ‘道具计数表ID‘,
  `giftID` int(11) NOT NULL COMMENT ‘道具ID‘,
  `receiveID` int(11) NOT NULL COMMENT ‘接受者ID‘,
  `type` int(11) NOT NULL COMMENT ‘道具对应类型(1对应会员,2对应狗狗)‘,
  `num` int(11) NOT NULL COMMENT ‘道具数量‘,
  `createDate` int(11) NOT NULL COMMENT ‘创建时间‘,
  `updateDate` int(11) DEFAULT NULL COMMENT ‘更新时间‘,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB  DEFAULT CHARSET=utf8 AUTO_INCREMENT=11 ;

--
-- 转存表中的数据 `dog_giftnumrecord`
--

INSERT INTO `dog_giftnumrecord` (`id`, `giftID`, `receiveID`, `type`, `num`, `createDate`, `updateDate`) VALUES
(3, 1, 138, 1, 4, 1413014344, 1413015921),
(4, 1, 139, 1, 2, 1413015942, 1413015944),
(5, 2, 139, 1, 1, 1413015946, NULL),
(6, 1, 140, 1, 3, 1413015961, 1413015963),
(7, 2, 140, 1, 2, 1413015965, 1413015967),
(8, 1, 141, 1, 3, 1413015972, 1413015973),
(9, 1, 142, 1, 1, 1413015978, NULL),
(10, 2, 142, 1, 8, 1413015980, 1413018250);

它的形式是IFNULL(fieldA,fieldB),意义是当字段fieldA是NULL时取fieldB,不是NULL时取fieldA的值。

时间: 2024-10-10 20:51:11

一个关于MYSQL IFNULL的用法的相关文章

MySQL IFNULL()函数用法MySQL

用法说明:IFNULL(expr1,expr2) 如果 expr1 不是 NULL,IFNULL() 返回 expr1,否则它返回 expr2. IFNULL()返回一个数字或字符串值,取决于它被使用的上下文环境. 我们先举一些例子: mysql> SELECT IFNULL(1,0); +-------------+ | IFNULL(1,0) | +-------------+ | 1 | +-------------+ 1 row in set 由于 expr1 是 1,不为 NULL,所

MySql IFNULL 联表查询出来的null 如何赋值

mysql中isnull,ifnull,nullif的用法如下: isnull(expr) 的用法:如expr 为null,那么isnull() 的返回值为 1,否则返回值为 0.mysql> select isnull(1+1);-> 0mysql> select isnull(1/0);-> 1使用= 的null 值对比通常是错误的. isnull() 函数同 is null比较操作符具有一些相同的特性.请参见有关is null 的说明. IFNULL(expr1,expr2)

MYSQL IFNULL使用功能

稍后的MYSQL IFNULL使用此功能的特定叙事,供大家参考学习,假设你MYSQL IFNULL条款的使用功能类别遇到似问题.最好看. MYSQL IFNULL(expr1,expr2) 假设expr1不是NULL,IFNULL()返回expr1.否则它返回expr2.IFNULL()返回一个数字或字符串值,取决于它被使用的上下文环境. mysql> select IFNULL(1,0); -> 1 mysql> select IFNULL(0,10); -> 0 mysql&g

mysql 数据类型TIMESTAMP用法

在mysql数据库中,timestamp数据类型是一个比较特殊的数据类型,可以自动在不使用程序更新情况下只要更新了记录timestamp会自动更新时间. 通常表中会有一个Create date 创建日期的字段,其它数据库均有默认值的选项.MySQL也有默认值timestamp,但在MySQL中,不仅是插入就算是修改也会更新timestamp的值!这样一来,就不是创建日期了,当作更新日期来使用比较好!因此在MySQL中要记录创建日期还得使用datetime 然后使用NOW() 函数完成!1: 如果

MYSQL IFNULL函数的使用

下文对MYSQL IFNULL函数的使用进行了详细的叙述,供您参考学习,如果您在MYSQL IFNULL函数使用方面遇到过类似的问题,不妨一看. MYSQL IFNULL(expr1,expr2) 如果expr1不是NULL,IFNULL()返回expr1,否则它返回expr2.IFNULL()返回一个数字或字符串值,取决于它被使用的上下文环境. mysql> select IFNULL(1,0); -> 1 mysql> select IFNULL(0,10); -> 0 mys

mysql group by 用法解析(详细)

在使用mysql时,有时需要查询出某个字段不重复的记录,虽然mysql提供 有distinct这个关键字来过滤掉多余的重复记录只保留一条,但往往只用它来返回不重复记录的条数,而不是用它来返回不重记录的所有值.其原因是 distinct只能返回它的目标字段,而无法返回其它字段,这个问题让我困扰了很久,用distinct不能解决的话,我只有用二重循环查询来解决,而 这样对于一个数据量非常大的站来说,无疑是会直接影响到效率的.所以我花了很多时间来研究这个问题,网上也查不到解决方案 下面先来看看例子:

[转]Infobright是一个与MySQL集成的开源数据仓库

[文章作者:张宴 本文版本:v1.1 最后修改:2010.05.18 转载请注明原文链接:http://blog.zyan.cc/infobright/] Infobright是一个与MySQL集成的开源数据仓库(Data Warehouse)软件,可作为MySQL的一个存储引擎来使用,SELECT查询与普通MySQL无区别. 一.Infobright的基本特征: 优点: 查询性能高:百万.千万.亿级记录数条件下,同等的SELECT查询语句,速度比MyISAM.InnoDB等普通的MySQL存储

mysql的基本用法

创建数据库:create database [if not exist]name [character set 编码方式 collate 校对规则] 显示库的创建信息:show create database name 数据库的删除:drop database [if exist]name 备份数据库:mysqldump -u用户名 -p数据库名>(路径)文件名.sql(windows命令.脚本文件,要退出sql命令窗口quit) 数据库恢复(1):Source 文件名.sql(sql命令)  

MySQL replace into 用法(insert into 的增强版)

MySQL replace into 用法(insert into 的增强版) 在向表中插入数据的时候,经常遇到这样的情况:1. 首先判断数据是否存在: 2. 如果不存在,则插入:3.如果存在,则更新. 在 SQL Server 中可以这样处理: if not exists (select 1 from t where id = 1) insert into t(id, update_time) values(1, getdate()) else update t set update_time