确切的查询:
选择
coupon_coupons
。code
,
coupon_coupons
。discountType
AS'类型',
coupon_coupons
。discountAmount
AS'金额',
coupon_coupons
。discountApplied
AS'已应用',
coupon_coupons
。description
,
group_concat(coupon_targetsku
。sku
separator';')AS'tarstku'
来自coupon_coupons
LEFT JOINcoupon_targetsku
ONcoupon_coupons
。code
=coupon_targetsku
。code
在coupon_coupons
。code
='testCode'
coupon_coupons.code =主键
coupon_targetsku.code = fk(coupon_coupons.code)
如果在数据库中找到coupon_coupons
。code
,则查询按预期运行,但是如果未找到,则返回的结果集是一行,其中包含所有NULL值。我猜它左边的连接我做错了。
如果找不到代码,我希望此查询返回零行。
我正在使用mysql:
服务器版本5.1.36-community-log
协议版本:10
提前致谢。
答案 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就是您想要的(当两个表中至少有一个匹配时返回行)