代码之家  ›  专栏  ›  技术社区  ›  Karthik

在fetch结果中mysql返回值为0

  •  1
  • Karthik  · 技术社区  · 15 年前

    我有这两张桌子,

    -- 
    -- 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的查询。

    事先谢谢你的帮助。

    1 回复  |  直到 15 年前
        1
  •  3
  •   lexu    15 年前

    你需要使用 IFNULL

    SELECT pid,pname,pid,year,IFNULL(price,0)
      FROM `t1`
      LEFT JOIN `t2` 
        ON (t1.pid = t2.pid)
    

    如果“字段\到\测试,值\到\显示”为空,则返回“值\到\显示”;如果“字段\到\测试”不为空,则直接返回。

    推荐文章