2016-05-16 29 views
0

這是我的查詢:如何更換外部查詢值,如果子查詢返回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,則應該更改main_menu值(外部查詢),例如使用IFNULL,但是用於外部查詢。請問我該怎麼做?

+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值。

你沒有定義'應該改變',所以這是我能想到的最好的。

+0

如果其子查詢返回null,COALESCE是否將其他字符串更改爲main_menu? – 112233

+0

@Keren是的,和'IFNULL'一樣,第一個輸入是列,第二個是空值時替換的值。 – sagi

+0

非常感謝@sagi – 112233