2013-06-25 15 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时使用所需列作为第二个参数,可以获得更好的性能。