如果子查询 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' ,所以这是我能想到的最好的。
这是我的查询:
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' ,所以这是我能想到的最好的。