如果子查询返回null,如何替换外部查询值

时间:2016-05-16 07:01:21

标签: mysql correlated-subquery

这是我的疑问:

SELECT * FROM main_menu AS m WHERE EXISTS(select * from menu where menu.main_menu_id = m.main_menu_id AND menu.menu IS NOT NULL)

以上查询仅显示main_menu表中的行,如果菜单表中各自的行不为NULL,这是正确的。

但我想做更多的事情。如果菜单表(子查询)的值发现为NULL,则应更改main_menu值(外部查询),例如使用IFNULL但外部查询。我该怎么办?

1 个答案:

答案 0 :(得分:2)

然后你应该使用LEFT JOIN而不是EXISTS()声明:

SELECT m.*,COALESCE(m2.<Column>,OtherValue),....
FROM main_menu m
LEFT JOIN menu m2
 ON(m2.main_menu_id = m.maid_menu_id AND m2.menu is not null)

即使没有这样的记录,这也会加入两个表,并且所有菜单列都会有NULL个值。

你没有定义'应该改变',所以这是我能想到的最好的。