gpt4 book ai didi

mysql - 从历史表中导出数据

转载 作者:行者123 更新时间:2023-11-30 23:13:18 24 4
gpt4 key购买 nike

我有一个管理狗玩具库的数据库。

dog_toy_history 表跟踪狗检查过哪些玩具玩具图书馆。只有当玩具被归还时,狗才能拥有新玩具,一只狗一次只能有一个玩具。

CREATE TABLE `dog_toy_history` (
`id` int(10) unsigned NOT NULL AUTO_INCREMENT,
`dog_id` int(10) unsigned NOT NULL,
`toy_id` varchar(8) NOT NULL,
`created_date` datetime NOT NULL,
PRIMARY KEY (`id`)
)

INSERT INTO `dog_toy_history`
(`id`,`dog_id`,`toy_id`,`created_date`)
VALUES
(1,1,'a','2013-07-05 00:00:00'),
(2,2,'b','2013-07-15 00:00:00'),
(3,3,'c','2013-07-20 00:00:00'),
(4,1,'d','2013-07-25 00:00:00'),
(5,2,'a','2013-08-05 00:00:00'),
(6,1,'b','2013-08-10 00:00:00'),
(7,2,'d','2013-08-15 00:00:00'),
(8,1,'a','2013-08-20 00:00:00');

给定一个 dog_id 和一个日期范围,我希望能够确定玩具狗在那个范围内,以及他们拥有玩具的日期。

示例查询 1

set @dog_id = 1;
set @start_date = '2013-07-05';
set @end_date = '2013-07-25';

<run special query> ... desired result:

toy_id, start_date, end_date
a 2013-07-05 2013-07-25
d 2013-07-25 2013-07-25

示例查询 2

set @dog_id = 1;
set @start_date = '2013-07-05';
set @end_date = '2013-08-19';

<run special query> ... desired result:

toy_id, start_date, end_date
a 2013-07-05 2013-07-25
d 2013-07-25 2013-08-10
b 2013-08-10 2013-08-19

示例查询 2

set @dog_id = 2;
set @start_date = '2013-07-01';
set @end_date = '2013-09-01';

<run special query> ... desired result:

toy_id, start_date, end_date
b 2013-07-15 2013-08-05
a 2013-08-05 2013-08-15
d 2013-08-15 2013-09-01

最佳答案

这一定对你有用。我使用您提供的数据在我的本地 mysql 数据库中进行了测试,它有效。

select dth.toy_id, dth.created_date as start_date, 
ifnull((select min(dth2.created_date) from dog_toy_history dth2 where dth2.created_date > dth.created_date and dth2.dog_id='2'),'2013-09-01') as end_date
from dog_toy_history dth
where (dth.created_date between '2013-07-01' and '2013-09-01') and dog_id='2' ORDER by start_date;

我给对mysql不是很熟悉的 friend 做一些解释:

  • 内部选择会带来下一个玩具的 created_date 字段(如果存在)。这将代表当前玩具的 end_date

  • ifnull(exp1,exp2) 指定下一个玩具不存在时的默认值。在这种情况下,end_date 将是输入的结束日期。

关于mysql - 从历史表中导出数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18980250/

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