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

How to replace outer query value if subquery returns 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)

以上查询仅当菜单 table 中的相应行不为 NULL 时才显示来自 main_menu table 的行,这是正确的。

但我想做更多的事情。如果 menu table(subquery) 的值找到 NULL ,则 main_menu value(outer query) 应该被改变,类似于使用 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 个值。

你没有定义 'should be altered' ,所以这是我能想到的最好的。