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

标签 mysql sql

假设我有下表:

=================================================
| color_id | parent_id | language_id | name     |
=================================================
| 1        | 50        | 1           | Black    |
-------------------------------------------------

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

=================================================
| color_id | parent_id | language_id | name     |
=================================================
| NULL     | 50        | 2           | NULL     |
-------------------------------------------------

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

最佳答案

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

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

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

关于mysql - SQL:如何返回不存在的行?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5925338/

相关文章:

java - MySQL DB 在使用 Exist 条件时返回不可预测的整数值。有时是 Integer 有时是 BigInteger

python - 使用python 2.7将csv文件加载到mysql中

mysql - COUNT() 和 Left Join 不起作用

python - 我的ee没有定义?我定义它。在这个 if 的 for 循环中

python - 尝试向 mySQL 数据库插入一个值

mysql - 关闭所有打开的连接 - MySQL

sql - 计算 bool 列,并根据 bool 列平均另一列

sql - 用 Haskell 表示电路

mysql - 如何从表限制中选择每列相同值 X 结果

php (PDO) 将查找表中的行转换为简单数组的简单方法