Postgres - 选择行,除非计数大于一个和另一个条件
我有一个包含以下示例数据的表:
appuser_id business_id role_id
6 2 CLIENT_MANAGER
8 2 CLIENT_ADMIN
6 3 BUSINESS_MANAGER
8 3 BUSINESS_MANAGER
6 4 BUSINESS_MANAGER
8 5 BUSINESS_MANAGER
8 6 BUSINESS_MANAGER
我正在创建一个功能,该函数将其角色为'business_manager'
的用户列表,但是,如果多个人管理一个业务(上面的业务3),其中一位用户恰好在任何其他业务上都具有'client_admin'
角色,我想跳过争夺记录的(跳过业务3),基本上是给定此查询:
SELECT * FROM my_table WHERE appuser_id = 8 AND role_id = 'BUSINESS_MANAGER' AND ???;
我想要以下结果:
appuser_id business_id role_id
8 5 BUSINESS_MANAGER
8 6 BUSINESS_MANAGER
对于用户6我想要的相同查询:
appuser_id business_id role_id
6 3 BUSINESS_MANAGER
6 4 BUSINESS_MANAGER
我不知道从哪里开始这样的问题。
如果有人拥有更好的标题,请随时更改。
I have a table with the following sample data:
appuser_id business_id role_id
6 2 CLIENT_MANAGER
8 2 CLIENT_ADMIN
6 3 BUSINESS_MANAGER
8 3 BUSINESS_MANAGER
6 4 BUSINESS_MANAGER
8 5 BUSINESS_MANAGER
8 6 BUSINESS_MANAGER
I'm looking to create a function that pulls a list of all businesses for a user where his role is 'BUSINESS_MANAGER'
, however, if multiple people manage a business (business 3 above), and one of the users happen to also have a 'CLIENT_ADMIN'
role on any other business, I want to skip that contended record (skip business 3 that is), basically, given this query:
SELECT * FROM my_table WHERE appuser_id = 8 AND role_id = 'BUSINESS_MANAGER' AND ???;
I want the following results:
appuser_id business_id role_id
8 5 BUSINESS_MANAGER
8 6 BUSINESS_MANAGER
and for the same query for user 6 I want:
appuser_id business_id role_id
6 3 BUSINESS_MANAGER
6 4 BUSINESS_MANAGER
I have no idea where to begin something like this.
If anyone has a better title, please feel free to change.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
正如评论中所建议的,您可以使用
not contains
:As it was suggested in the comment, you can use
not exists
: