SQL:如何返回不存在的行?

Sta*_*bie 5 mysql sql

说我有下表:

=================================================
| color_id | parent_id | language_id | name     |
=================================================
| 1        | 50        | 1           | Black    |
-------------------------------------------------
Run Code Online (Sandbox Code Playgroud)

然后说我需要排WHERE parent_id = 50 AND language_id = 2.显然,根据我的示例表,我什么也得不到.但是,我仍然需要一个结果 - 可能是这样的:

=================================================
| color_id | parent_id | language_id | name     |
=================================================
| NULL     | 50        | 2           | NULL     |
-------------------------------------------------
Run Code Online (Sandbox Code Playgroud)

有没有办法在SQL中执行此操作?

MPe*_*ier 7

您可以对潜在有效记录和默认值进行联合查询,然后选择第一个:

SELECT * FROM
(SELECT color_id, parent_id, language_id, name, 1 as order_rank
 FROM some_table
 WHERE parent_id = %parent_id% AND language_id = %language_id%
 UNION
 SELECT NULL, %parent_id%, %language_id%, NULL, 2 as order_rank
)
ORDER BY order_rank
LIMIT 1
Run Code Online (Sandbox Code Playgroud)

(根据OMG小马的建议,使用静态值进行编辑)