2
我有一個MySQL查詢的小問題。我需要比較同一個表中的行。這裏是我的表 「video_stats」:MySQL - 比較同一表中的行與日期範圍
----------------------------------
video | date | views
----------------------------------
8kCge8vWnIg | 2017-05-15 | 4
8kCge8vWnIg | 2017-05-16 | 20
8kCge8vWnIg | 2017-05-17 | 11
8kCge8vWnIg | 2017-05-18 | 12
rYyiTP0srNs | 2017-05-15 | 627
rYyiTP0srNs | 2017-05-16 | 6414
rYyiTP0srNs | 2017-05-17 | 21076
rYyiTP0srNs | 2017-05-18 | 34434
cRfEo-ZzU4U | 2017-05-17 | 17049
cRfEo-ZzU4U | 2017-05-18 | 12466
MySQL查詢:
SELECT t1.video,
t1.date,
t1.views,
t1c.video,
t1c.date,
t1c.views
FROM video_stats t1
LEFT JOIN video_stats t1c ON t1.video=t1c.video
AND t1c.date<='2017-05-16' AND t1c.date>='2017-05-15'
WHERE t1.date>='2017-05-17'
AND t1.date<='2017-05-18'
結果是在這裏...
--------------------------------------------------------------------------
video | t1.date | t1.views | video | t1c.date | t1c.date
--------------------------------------------------------------------------
#1| 8kCge8vWnIg | 2017-05-17 | 12 | 8kCge8vWnIg | 2017-05-15 | 4
#2| 8kCge8vWnIg | 2017-05-17 | 12 | 8kCge8vWnIg | 2017-05-16 | 20
#3| 8kCge8vWnIg | 2017-05-18 | 11 | 8kCge8vWnIg | 2017-05-15 | 4
#4| 8kCge8vWnIg | 2017-05-18 | 11 | 8kCge8vWnIg | 2017-05-16 | 20
#5| rYyiTP0srNs | 2017-05-17 | 21076 | rYyiTP0srNs | 2017-05-15 | 627
#6| rYyiTP0srNs | 2017-05-17 | 21076 | rYyiTP0srNs | 2017-05-16 | 6414
#7| rYyiTP0srNs | 2017-05-18 | 34434 | rYyiTP0srNs | 2017-05-15 | 627
#8| rYyiTP0srNs | 2017-05-18 | 34434 | rYyiTP0srNs | 2017-05-16 | 6414
#9| cRfEo-ZzU4U | 2017-05-17 | 17049 | NULL | NULL | NULL
#10| cRfEo-ZzU4U | 2017-05-18 | 12466 | NULL | NULL | NULL
沒有與兩個T1單日期沒有問題。日期和t1c.date。但是如果有多個日期,問題就會開始。如何排除重複的行:#2和#3,#6和#7? 如何恰當地總結t1.views和t1c.views?
最後,我需要這樣的東西......但我不知道如何。
video | t1.views *05/17 + 05/18* | t1c.views *05/15 + 05/16*
-------------------------------------------------------------------
8kCge8vWnIg | 23 | 24
rYyiTP0srNs | 55510 | 7041
cRfEo-ZzU4U | 29515 | NULL
TNX,它工作得很好。有點慢(尤其是大日期範圍),但我想沒有辦法改善查詢。 –