sql - SQL在另一个表中不存在,但在另一个表中count大于3
问题描述
我有以下表格,其中包含photo
每个个人资料的个人资料和照片列表(在表格中)。我还有一个service
表和一个表,我想要一个查询,该查询将返回不属于使用的服务的配置文件 ID,并且表used
中还有超过 3 张照片photo
profile
桌子_
CREATE TABLE public.profile
(
id integer NOT NULL DEFAULT nextval('profile_id_seq'::regclass),
name text COLLATE pg_catalog."default" NOT NULL,
birthday timestamp with time zone NOT NULL,
CONSTRAINT profile_id PRIMARY KEY (id)
)
photo
桌子_
CREATE TABLE public.photo
(
id integer NOT NULL DEFAULT nextval('photo_id_seq'::regclass),
image bytea NOT NULL,
image_id text COLLATE pg_catalog."default" NOT NULL,
order_count smallint NOT NULL,
profile_id bigint NOT NULL,
CONSTRAINT photo_id PRIMARY KEY (id),
CONSTRAINT photo_profile_id_fkey FOREIGN KEY (profile_id)
REFERENCES public.profile (id) MATCH SIMPLE
ON UPDATE CASCADE
ON DELETE CASCADE
)
service
桌子_
CREATE TABLE public.service
(
id integer NOT NULL DEFAULT nextval('service_id_seq'::regclass),
name text COLLATE pg_catalog."default" NOT NULL,
CONSTRAINT service_id PRIMARY KEY (id)
)
used
桌子_
CREATE TABLE public.used
(
id integer NOT NULL DEFAULT nextval('used_id_seq'::regclass),
service_id bigint NOT NULL,
profile_id bigint NOT NULL,
insert_timestamp timestamp with time zone NOT NULL DEFAULT now(),
CONSTRAINT used_id PRIMARY KEY (id),
CONSTRAINT used_profile_id_fkey FOREIGN KEY (profile_id)
REFERENCES public.profile (id) MATCH SIMPLE
ON UPDATE CASCADE
ON DELETE CASCADE,
CONSTRAINT used_service_id_fkey FOREIGN KEY (service_id)
REFERENCES public.service (id) MATCH SIMPLE
ON UPDATE CASCADE
ON DELETE CASCADE
)
解决方案
使用存在和不存在
select p.* from profile p
where exists ( select 1 from photo ph where ph.profile_id =p.id
having count (distinct image_id )=3
)
and not exists ( select 1 from used u where u.profile_id =p.id)
推荐阅读
- javascript - 如何通过 React 操作创建器在 Firebase 中创建嵌套数据库?
- c++ - 在运行时猜测函数的返回类型
- node.js - Sequelize:将日期存储在 JSON 列中,并将它们与 where 子句中的日期进行比较
- python-3.x - 如何在 x 轴上设置带有日期的图表
- wordpress - 有没有办法配置 nginx 在 Google PageSpeed Insight 上获得更多分数?
- c# - 如何设置对象在游戏对象方向上的速度?
- java - 当按钮每秒都在改变颜色时,如何让我按下的按钮停止而其他按钮继续切换颜色?
- datagridview - 无法刷新绑定到 DataTable 的 DataGridView
- java - 如何将xml文件生成为循环方法?
- postgresql - 按天自动分区 - PostgreSQL