我不知道怎么说这个,所以在发布之前我不确定要google什么。
这也将通过SQLite完成。
基本上我要做的就是这样:
SELECT name FROM users WHERE Language = 'en'
如果'Language = 'en'
未返回任何行,请更改'en' to 'fr'
我知道我可以通过运行第一个查询,检查结果然后再尝试第二个查询来实现这一目标,我认为可能有一种方法可以在单个查询中执行此操作,因为这样我的情况会更好。
答案 0 :(得分:4)
如果您只想查找一行,请使用优先级:
select name
from users
where language in ('en', 'fr')
order by (case when language = 'en' then 1 else 2 end)
fetch first 1 row only;
如果您要查找多行,则可以使用exists
子句。
答案 1 :(得分:1)
如果SQLLite中没有这种语法,请原谅我,但是如果它是这样的话应该可以这样做:
SELECT
name
FROM
users
WHERE
language = 'en' OR
(
language = 'fr' AND
NOT EXISTS (SELECT * FROM users WHERE language = 'en')
)
答案 2 :(得分:0)
如果您正在寻找单行,UNION ALL
/ LIMIT 1
有一个非常简单的解决方案:
SELECT name FROM users WHERE language = 'en'
UNION ALL
SELECT name FROM users WHERE language = 'fr'
LIMIT 1;