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 选择查询而不是字符串 _"replace_string"_ 吗?

4

4 回答 4

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 。

于 2013-06-25T09:29:21.750 回答
0

尝试联合所有

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
于 2013-06-25T09:23:54.647 回答
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
于 2013-06-25T09:31:07.713 回答
0

我不确定mysql特有的任何怪癖,但是在t-sql中,您可以在ISNULL中使用嵌套的select语句,但它不会进行特别有效的查询。

通过对首选表进行外部连接,然后将所需列用作调用 ISNULL 的第二个参数,您可以获得更好的性能。

于 2013-06-25T09:33:34.737 回答