我有两张table
CREATE TABLE public.city_url
(
id bigint NOT NULL DEFAULT nextval('city_url_id_seq'::regclass),
url text,
city text,
state text,
country text,
common_name text,
CONSTRAINT city_url_pkey PRIMARY KEY (id)
)
以及
CREATE TABLE public.email_account
(
id bigint NOT NULL DEFAULT nextval('email_accounts_id_seq'::regclass),
email text,
password text,
total_replied integer DEFAULT 0,
last_accessed timestamp with time zone,
enabled boolean NOT NULL DEFAULT true,
deleted boolean NOT NULL DEFAULT false,
city_url_id bigint,
CONSTRAINT email_accounts_pkey PRIMARY KEY (id),
CONSTRAINT email_account_city_url_id_fkey FOREIGN KEY (city_url_id)
REFERENCES public.city_url (id) MATCH SIMPLE
ON UPDATE NO ACTION ON DELETE NO ACTION
)
我想提出一个查询,仅当email_account中没有任何行指向city_url_id
列时,才获取city_url
中的行。
4条答案
按热度按时间6jygbczu1#
NOT EXISTS
出现在脑海中:mrwjdhj32#
还有这个选项:
vbkedwbf3#
A
NOT EXISTS
绝对是“...如果没有行..."的答案。尽管如此,通过选择差量来实现这一点将是优选的。
原则上是:
使用这里的表名,这将是:
c9x0cxw04#
我相信这里也可以使用
NOT IN
,尽管在大型数据集上可能性能较差: