MySql - 使用COALESCE检索正确的值?

时间:2012-04-27 18:40:53

标签: mysql select join coalesce

我这里有一个sql小提琴: http://www.sqlfiddle.com/#!2/fbd48/1

花的颜色应为红色,熊的颜色应为棕色,但两者的颜色均为红色。

不确定COALESCE是否适合此处,但在此处类似的内容中已接受答案: MySQL - Retrieve row value from different table depending on value of row in a table

2 个答案:

答案 0 :(得分:2)

SELECT mem.member_name, g.*
, coalesce(f.flower_color, b.bear_color) as color
from members mem
inner join general g on mem.member_id = g.member_id
left join flowers f on g.gift_item_id = f.flower_id AND g.gift_item = 'flower'
left join bears b on g.gift_item_id = b.bear_id AND g.gift_item = 'bear'
WHERE g.month='june'

没有办法区分花和熊,所以我在连接中加入了测试。这很臭。你可能会重新考虑你的架构。

答案 1 :(得分:1)

如果您使用独特的礼品ID,似乎有效。

http://www.sqlfiddle.com/#!2/c02c8/1