当找不到id时,查询导致1行具有空值

时间:2010-10-20 01:11:42

标签: mysql foreign-keys

确切的查询:

  

选择       coupon_couponscode
      coupon_couponsdiscountType AS'类型',
      coupon_couponsdiscountAmount AS'金额',
      coupon_couponsdiscountApplied AS'已应用',
      coupon_couponsdescription
      group_concat(coupon_targetskusku separator';')AS'tarstku'
   来自coupon_coupons
      LEFT JOIN coupon_targetsku ON coupon_couponscode = coupon_targetskucode
   在coupon_couponscode ='testCode'

     

coupon_coupons.code =主键
  coupon_targetsku.code = fk(coupon_coupons.code)

如果在数据库中找到coupon_couponscode,则查询按预期运行,但是如果未找到,则返回的结果集是一行,其中包含所有NULL值。我猜它左边的连接我做错了。

如果找不到代码,我希望此查询返回零行。

我正在使用mysql:
服务器版本5.1.36-community-log
协议版本:10

提前致谢。

2 个答案:

答案 0 :(得分:4)

使用group by

时使用group_concat()是件好事
SELECT coupon_coupons.code,
coupon_coupons.discountType AS 'type',
coupon_coupons.discountAmount AS 'amount',
coupon_coupons.discountApplied AS 'applied',
coupon_coupons.description,
group_concat(coupon_targetsku.sku separator ';') AS 'targetsku' 
FROM coupon_coupons
JOIN coupon_targetsku ON coupon_coupons.code = coupon_targetsku.code 
WHERE coupon_coupons.code = 'testCode'
GROUP BY coupon_coupons.code

答案 1 :(得分:0)

LEFT JOIN关键字返回左表(coupon_coupons)中的所有行,即使右表(coupon_targetsku)中没有匹配项也是如此。

根据您的情况,JOIN就是您想要的(当两个表中至少有一个匹配时返回行)