gpt4 book ai didi

mysql - SQL 在表中查找日期范围差距

转载 作者:行者123 更新时间:2023-11-30 23:52:45 26 4
gpt4 key购买 nike

美好的一天。

我似乎在为一个看似简单的问题而苦苦挣扎。

我有一个表,该表的值与有限数量的 ID 的日期(每月)相关联

即。表1

ID | Date ---| Value 
01 | 2015-01 | val1
01 | 2015-02 | val2
02 | 2015-01 | val1
02 | 2015-03 | val2

因此 ID:02 没有日期 2015-02 的值。

我想返回所有没有值的 ID 和日期。日期范围是:从表 1 中选择不同的日期

我似乎无法在同一张 table 上选择和加入的领域之外思考。

我需要在我的选择中包含 ID,以便我可以以某种方式选择该 ID 存在的 ID 和日期范围,并与整个日期范围进行比较,以获取不在“整个”日期范围。

请指教。谢谢

最佳答案

你最后两句话不是很清楚。但是您可以使用不同的@max_days 和@min_date 来使用以下查询:

-- DROP TABLE table1;
CREATE TABLE table1(ID int not null, `date` date not null, value varchar(64) not null);
INSERT table1(ID,`date`,value)
VALUES (1,'2015-01-01','v1'),(1,'2015-01-02','v2'),(2,'2015-01-01','v1'),(2,'2015-01-03','v2'),(4,'2015-01-01','v1'),(4,'2015-01-04','v2');
SELECT * FROM table1;

SET @day=0;
SET @max_days=5;
SET @min_date='2015-01-01';

SELECT i.ID,d.`date`
FROM (SELECT DISTINCT ID FROM table1) i
CROSS JOIN (
SELECT TIMESTAMPADD(DAY,@day,@min_date) AS `date`,@day:=@day+1 AS day_num
FROM table1 WHERE @day<@max_days) d
LEFT JOIN table1 t
ON t.ID=i.ID
AND t.`date`=d.`date`
WHERE t.`date` IS NULL
ORDER BY i.ID,d.`date`;

关于mysql - SQL 在表中查找日期范围差距,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40811556/

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