SELECT first_name,last_name,IFNULL(state_table.state_name,"replace string") FROM doctor_table left join state_table on state=state.id
我们可以使用 sql 选择查询而不是字符串 _"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 选择查询而不是字符串 _"replace_string"_ 吗?
您可以使用子选择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, 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
你可以这样做
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 的第二个参数,您可以获得更好的性能。