gpt4 book ai didi

sql - 在 SQL 表中查找有效的重叠条目

转载 作者:行者123 更新时间:2023-12-05 01:36:31 25 4
gpt4 key购买 nike

在同一个表中找到与其他条目重叠的所有条目的最有效方法是什么?每个条目都有开始和结束日期。例如,我有以下数据库设置:

CREATE TABLE DEMO
(
DEMO_ID int IDENTITY ,
START date NOT NULL ,
END date NOT NULL
);

INSERT INTO DEMO (DEMO_ID, START, END) VALUES (1, '20100201', '20100205');
INSERT INTO DEMO (DEMO_ID, START, END) VALUES (2, '20100202', '20100204');
INSERT INTO DEMO (DEMO_ID, START, END) VALUES (3, '20100204', '20100208');
INSERT INTO DEMO (DEMO_ID, START, END) VALUES (4, '20100206', '20100211');

我的查询如下所示:

SELECT DISTINCT * 
FROM DEMO A, DEMO B
WHERE A.DEMO_ID != B.DEMO_ID
AND A.START < B.END
AND B.START < A.END

问题是当我的演示表有 20'000 行时,查询花费的时间太长。我的环境是 MS SQL Server 2008。感谢任何更有效的解决方案

最佳答案

这更简单,对于超过 20000 条记录,执行时间大约为 2 秒

select * from demo a
where not exists(
select 1 from demo b
where a.demo_id!=b.demo_id
AND A.S < B.E
AND B.S < A.E)

关于sql - 在 SQL 表中查找有效的重叠条目,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2957351/

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