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”_?如何在查询字符串返回空值时添加动态值?
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”_?如何在查询字符串返回空值时添加动态值?
尝试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
您可以使用子选择您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的想法。
你可以这样做
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
我不知道有关具体到MySQL任何怪癖,但在T-SQL,你可以使用ISNULL嵌套select语句,但它不会做特别有效的查询。
通过在首选表上创建外连接,然后在调用ISNULL时使用所需列作为第二个参数,可以获得更好的性能。
看起来你想要一个外连接,但是信息太少。 – Jon
听起来像是左连接,然后合并 – zinking
通过阐明你的意图和/或提供更多背景信息来说明你的问题。 – taiansu