2013-06-25 39 views
1
SELECT first_name,last_name,IFNULL(state_table.state_name,"replace string") FROM doctor_table left join state_table on state=state.id 

我們可以使用sql select查詢來代替string _「replace_string」_?如何在查詢字符串返回空值時添加動態值?

+0

看起來你想要一個外連接,但是信息太少。 – Jon

+0

聽起來像是左連接,然後合併 – zinking

+0

通過闡明你的意圖和/或提供更多背景信息來說明你的問題。 – taiansu

回答

0

嘗試UNION ALL

SELECT first_name,last_name, state_table.state_name 
FROM doctor_table left join state_table on state=state.id 
WHERE state_table.state_name <> NULL 

UNION ALL 

SELECT first_name,last_name, "replace_string" as state_name 
FROM doctor_table left join state_table on state=state.id 
WHERE state_table.state_name == NULL 
0

您可以使用子選擇您IFNULL

SELECT first_name, last_name, 
     IFNULL(state_table.state_name,(SELECT some_value FROM some_table WHERE id=some_key)) 
FROM doctor_table 
LEFT JOIN state_table on state=state.id 

你需要確保你的子選擇恰好返回1倍的值或者整個查詢將失敗。

這是一個sqlfiddle的想法。

0

你可以這樣做

SELECT first_name,last_name, 
IFNULL(state_table.state_name,(SELECT `name` FROM table WHERE Id='something' LIMIT 1)) as something 
FROM doctor_table left join state_table on state=state.id 
0

我不知道有關具體到MySQL任何怪癖,但在T-SQL,你可以使用ISNULL嵌套select語句,但它不會做特別有效的查詢。

通過在首選表上創建外連接,然後在調用ISNULL時使用所需列作爲第二個參數,可以獲得更好的性能。