http://sqlfiddle.com/#!9/0cc3ec/22
Create Table t(
id int,
_date datetime,
personstatus char(5)
);
Insert Into t(id, _date, personstatus)
Values
(1,'2017-07-03 10:00:00','i'),
(2,'2017-07-03 10:10:37','i'),
(3,'2017-07-03 16:10:00','o'),
(4,'2017-07-03 17:40:27','o'),
(5,'2017-07-05 09:10:22','i'),
(6,'2017-07-05 09:30:43','i'),
(7,'2017-07-05 17:44:02','o'),
(8,'2017-07-05 17:50:19','o');
Select @input := '2017-07-03';
Select
t1.*, t2.*
From
(Select * From t Where DATE(_date) = @input Order by _date ASC Limit 1) t1
Join
(Select * From t Where DATE(_date) = @input Order by _date DESC Limit 1) t2
。たとえば、次のようにすることができます。
1.上記のキューを使用してプロシージャを作成し、日付をループしてプロシージャを呼び出します。または
2. 2つの日付の間の日付でtempテーブルを作成し、tempテーブルをt1とt2に結合します。または
3.日付をループして、キューを呼び出します。
私は現在MySQLサーバーを持っていません。あなたは以下の擬似コードうまくことを願って:Leo.W @この良い答えのため
declare @start date
declare @end date
set @start = '2017-02-03'
set @end = '2017-02-05'
while (@start <= @end) begin
Select
t1.*, t2.*
From
(Select * From t Where DATE(_date) = @start Order by _date ASC Limit 1) t1
Join
(Select * From t Where DATE(_date) = @start Order by _date DESC Limit 1) t2
set @start = dateadd(day, 1, @start)
end
写真はありませんありがとう。 https://meta.stackoverflow.com/questions/333952/why-should-i-provide-an-mcve-for-what-seems-to-me-to-be-a-very-simple-sql-queryを参照してください。 – Strawberry