我有这两张桌子,
-- -- Table structure for table `t1` -- CREATE TABLE `t1` ( `pid` varchar(20) collate latin1_general_ci NOT NULL, `pname` varchar(20) collate latin1_general_ci NOT NULL ) ENGINE=MyISAM DEFAULT CHARSET=latin1 COLLATE=latin1_general_ci; -- -- Dumping data for table `t1` -- INSERT INTO `t1` VALUES ('p1', 'pro1'); INSERT INTO `t1` VALUES ('p2', 'pro2'); -- -------------------------------------------------------- -- -- Table structure for table `t2` -- CREATE TABLE `t2` ( `pid` varchar(20) collate latin1_general_ci NOT NULL, `year` int(6) NOT NULL, `price` int(3) NOT NULL ) ENGINE=MyISAM DEFAULT CHARSET=latin1 COLLATE=latin1_general_ci; -- -- Dumping data for table `t2` -- INSERT INTO `t2` VALUES ('p1', 2009, 50); INSERT INTO `t2` VALUES ('p1', 2010, 60); INSERT INTO `t2` VALUES ('p3', 2007, 200); INSERT INTO `t2` VALUES ('p4', 2008, 501);
我的疑问是,
SELECT * FROM `t1` LEFT JOIN `t2` ON t1.pid = t2.pid
得到结果,
pid pname pid year price p1 pro1 p1 2009 50 p1 pro1 p1 2010 60 p2 pro2 NULL NULL NULL
我的问题是,我想得到的价格值是0而不是空值。如何编写获取价格值为0的查询。
事先谢谢你的帮助。
你需要使用 IFNULL
IFNULL
SELECT pid,pname,pid,year,IFNULL(price,0) FROM `t1` LEFT JOIN `t2` ON (t1.pid = t2.pid)
如果“字段\到\测试,值\到\显示”为空,则返回“值\到\显示”;如果“字段\到\测试”不为空,则直接返回。