假设我有下表:
=================================================
| 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 的建议,使用静态值进行编辑以进行排序)
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)