gpt4 book ai didi

sql - 比较多行的开始和结束日期

转载 作者:行者123 更新时间:2023-11-29 13:33:48 24 4
gpt4 key购买 nike

我有一个联系人订阅表。一个联系人可以有多个订阅:

CREATE TABLE contact (
id INTEGER NOT NULL,
name TEXT,
PRIMARY KEY (id)
);

CREATE TABLE subscription (
id INTEGER NOT NULL,
contact_id INTEGER NOT NULL REFERENCES contact(id),
start_date DATE,
end_date DATE,
PRIMARY KEY (id)
);

我需要获取没有订阅的给定联系人的所有订阅开始日期与同一订阅的另一个订阅的结束日期相同联系方式。

所以对于给定的数据:

INSERT INTO contact (id, name) VALUES 
(1, 'John'),
(2, 'Frank');

INSERT INTO subscription (id, contact_id, start_date, end_date) VALUES
(1, 1, '2012-01-01', '2013-01-01'),
(2, 1, '2013-01-01', '2014-01-01'),
(3, 2, '2012-01-01', '2012-09-01'),
(4, 2, '2013-01-01', '2014-01-01');

我想获得 ID 为 2、3、4 但不是 1 的订阅,因为联系人“John”订阅了 start_dateend_date 在同一天 (2013-01-01)id 为 1 的订阅。

实现此目标的最佳方法是什么?

最佳答案

SQL Fiddle

select *
from subscription s0
where not exists (
select 1
from subscription s1
where
s0.contact_id = s1.contact_id
and s1.start_date = s0.end_date
)
order by contact_id, id

关于sql - 比较多行的开始和结束日期,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17928175/

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