gpt4 book ai didi

sql - SELECT 查询应返回 Postgresql 中 OR 条件之一的记录

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

示例代码:

CREATE TABLE Foo
(
Id SERIAL NOT NULL,
Name TEXT NOT NULL,
DefaultValue BOOLEAN NOT NULL,
Active BOOLEAN NOT NULL
);

INSERT INTO Foo(Name, DefaultValue, Active)
VALUES ('aa', TRUE, FALSE);
INSERT INTO Foo(Name, DefaultValue, Active)
VALUES ('bb', TRUE, FALSE);

我需要一个类似于此的查询来获得我需要的结果:

SELECT *
FROM Foo
WHERE Active = TRUE OR DefaultValue = TRUE;

并且查询应该返回aa,bb的记录。

添加这两条记录后:

INSERT INTO Foo(Name, DefaultValue, Active)
VALUES ('cc', FALSE, TRUE);
INSERT INTO Foo(Name, DefaultValue, Active)
VALUES ('dd', FALSE, TRUE);

查询应该返回cc、dd的记录。

如果存在,我只需要第一个条件的记录。否则我要第二个条件的记录。

有没有更简单的方法可以在 postgresql 中实现这个结果?提前致谢

最佳答案

您可以使用窗口函数来确定是否有任何行处于事件状态:

SELECT *
FROM (SELECT f.*,
BOOL_OR(Active) OVER () as any_active
FROM Foo f
) f
WHERE any_active OR
(NOT any_active AND DefaultValue);

关于sql - SELECT 查询应返回 Postgresql 中 OR 条件之一的记录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53140087/

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