gpt4 book ai didi

sql - 选择只匹配一个 OR 条件的行

转载 作者:行者123 更新时间:2023-11-29 12:12:41 25 4
gpt4 key购买 nike

将这样的表格视为一个非常简单的示例:

|----------------------------------|
| names |
|----------------------------------|
| id | name_id | name | language |
|----------------------------------|
| 1 | 1 | foo | en |
|----------------------------------|
| 2 | 1 | foose | fr |
|----------------------------------|

我想获取名称类似于“foo”且语言为“fr”的行,但如果没有语言为“fr”的行,则回退到语言为“en”的行。所以我的第一个想法是编写这样的查询:

SELECT * 
FROM names
WHERE name ILIKE '%foo%' AND (language = 'fr' OR language = 'en')

只要只有一种语言可用,它就可以正常工作,但是当两种语言都可用时,它会返回两行,所以我添加了一个 DISTINCT ON:

SELECT DISTINCT ON (name_id) * 
FROM names
WHERE name ILIKE '%foo%' AND (language = 'fr' OR language = 'en')

但是这个也不起作用,因为它返回语言为“en”的那个。

有什么想法吗?

最佳答案

就像您对第一个查询所做的那样,只是只选择排序最靠前的查询,以便“fr”出现在“en”之前。

SELECT * 
FROM names
WHERE name LIKE '%foo%' AND (language = 'fr' OR language = 'en')
ORDER BY language DESC
LIMIT 1

关于sql - 选择只匹配一个 OR 条件的行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24474452/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com