Mysql 组合多个SQL select查询的结果
我有一个表,其中有打开日期和关闭日期字段。我必须创建一个过程,给定一个日期范围作为输入,我将显示该范围内每个日期的所有记录,即打开日期>日期和关闭日期的记录 例如,如果我的桌子是Mysql 组合多个SQL select查询的结果,mysql,sql,Mysql,Sql,我有一个表,其中有打开日期和关闭日期字段。我必须创建一个过程,给定一个日期范围作为输入,我将显示该范围内每个日期的所有记录,即打开日期>日期和关闭日期的记录 例如,如果我的桌子是 id open_date closed_date 1 2016-06-06 2016-06-10 2 2016-06-08 2016-06-11 日期范围为2016-06-07至2016-06-09 那么结果应该是 Date Count 2016-06-07
id open_date closed_date
1 2016-06-06 2016-06-10
2 2016-06-08 2016-06-11
日期范围为2016-06-07至2016-06-09
那么结果应该是
Date Count
2016-06-07 1
2016-06-08 2
2016-06-09 2
但我得到的结果是
Date Count
2016-06-09 2
我写下的程序如下
CREATE DEFINER=`root`@`localhost` PROCEDURE `find_number_of_bugs`(IN startDate DateTIme, IN endDate DateTime)
BEGIN
Declare testDate Date;
SET testDate=startDate;
while testDate<=endDate DO
select testDate as Dates ,count(bugID) as Number_Of_Bugs_Open from bugs where testDate between open_date and close_date OR close_date=null;
SET testDate=DATE_ADD(testDate,INTERVAL 1 DAY);
END while;
END
CREATE DEFINER=`root`@`localhost`过程`find\u number\u of\u bug`(在startDate-DateTIme中,在endDate-DateTIme中)
开始
宣布测试日期;
设置testDate=startDate;
testDate时,除了在多个结果集中,您正在删除所有结果。
您可以将所有查询结果保存在临时表中,并在最后查询一次
CREATE DEFINER=`root`@`localhost` PROCEDURE `find_number_of_bugs`(IN startDate DateTIme, IN endDate DateTime)
BEGIN
Declare testDate Date;
SET testDate=startDate;
CREATE TEMPORARY TABLE output (Dates date,Number_Of_Bugs_Open int);
while testDate<=endDate DO
insert into output select testDate as Dates ,count(bugID) as Number_Of_Bugs_Open from bugs where testDate between open_date and close_date OR close_date=null;
SET testDate=DATE_ADD(testDate,INTERVAL 1 DAY);
END while;
select * from output;
END
CREATE DEFINER=`root`@`localhost`过程`find\u number\u of\u bug`(在startDate-DateTIme中,在endDate-DateTIme中)
开始
宣布测试日期;
设置testDate=startDate;
创建临时表输出(日期、错误数、打开整数);
while testDateRemovedSQL SERVER
tagWhy while循环。这当然是一个简单的问题。你有日历表吗?你需要的结果似乎与你的输入不匹配??请检查!如果我没有错的话,你为什么想要日期=2016-06-08的两个结果?最后一个应该是2016-06-09 2
@NehaArora,P.s.如果你喜欢答案,你可能想要升级。我没有足够的声誉来这么做:D