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



这是我的查询:

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,但用于外部查询。请问我该怎么做?

然后应该使用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值。

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

最新更新