我有以下表格,其中包含个人资料和每个个人资料的照片列表(在photo
表中)。我也有一个service
表和一个used
表,我想要一个查询,该查询返回的个人资料ID不属于所使用的服务,并且在{{1}中也包含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
答案 0 :(得分:2)
使用存在,不存在
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)
答案 1 :(得分:1)
我会去
s = "You love Python!"
s1=[]
s2=[]
for c in s:
if c in "aeiou":
s1.append(c)
else:
s2.append(c)
s3 = ''.join(s1+s2)
print(s1)
print(s2)
print(s3)
如果仅需要select p.profile_id
from photo p
where not exists (select 1
from used u
where u.profile_id = p.profile_id
)
group by p.profile_id
having count(*) >= 3;
,则不需要profile_id
表。