【问题标题】:PostgreSQL select record with multiple conditionPostgreSQL选择具有多个条件的记录
【发布时间】:2021-08-23 18:21:36
【问题描述】:
我正在尝试选择记录,但没有得到我想要的记录。这是我的 sqlfiddle http://sqlfiddle.com/#!17/5296a/1
所以当我使用以下查询选择记录时
select title from post where (id>3 and author_id=3) or id>3 limit 1
它给了我标题DDDDD 的结果。它应该给我GGGGGGGG。
我想检查是否有任何记录 author_id=3 并且大于帖子 id=3 如果没有,那么只需获取大于 3 的任何帖子 id。
我不确定我在这里缺少什么。
【问题讨论】:
标签:
sql
postgresql
select
where-clause
【解决方案1】:
我想检查是否存在 author_id=3 且大于帖子 id=3 的记录,如果没有,则获取大于 3 的任何帖子 id。
根据你的描述,你想要:
select title
from post
where id > 3
order by (author_id = 3) desc
limit 1;
Here 是一个 dbfiddle。这会过滤所有行,因此只有id > 3。 order by 将任何带有 author_id = 3 的行放在首位,因此 limit 将返回该行。
您的版本只返回与where 条件匹配的任意行——并且该条件等同于where id > 3。 where 条件不提供任何类型的“偏好”。他们只是指定给定的行是否在结果集中。