一個關於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的值。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM