0
在我的mysql數據庫中,我有一個表,可以調用狀態。該表具有creative_id,每次對廣告素材進行狀態更改時,我們會記錄一個新行,並將舊行更改爲is_current爲0,並將新行更改爲1.IN SQL檢查版本化行是否更新
我想查詢有多少人有過在狀態更改爲「已審覈」後狀態更改超過90天。所以下面的查詢就是從頭開始的,但問題是,如果在90天內發生了一些變化,但通過多次更改,最終結果會超過90天。這裏是我的查詢到目前爲止:
SELECT COUNT(*) FROM creative_status_version csv
INNER JOIN creative_status_version csv2
ON csv.creative_id = csv2.creative_id
AND DATEDIFF(day, csv2.last_modified_time, csv.last_modified_time) > 90
WHERE csv.audit_status = 'audited'
AND csv.is_current = 0
AND csv2.audit_status = 'rejected'
AND csv2.is_current = 1
例子:
|creative_id| audit_status| is_current| last_modified_time |
|1 |audited | 0 | 1-1-2017 |
|1 |rejecected | 1 | 5-1-2017 |
|2 |audited | 0 | 1-1-2017 |
|2 |pending | 0 | 2-1-2017 |
|2 |rejected | 1 | 5-1-2017 |
|3 |audited | 1 | 1-1-2017 |
|4 |rejected | 1 | 5-1-2017 |
因爲從審計去唯一的結果 - >別的...... 90天的時間跨度之後是創意與ID = 1,則結果將是:
|Count(*)|
|1 |
我是sory,但我不明白你的問題。請提供一些示例數據,預期的輸出以及您的查詢提供的輸出。請選擇您的樣本數據來證明您正在描述的問題。 – Shadow
所以基本上,你想要的是查詢已經或者已經超過90天的所有狀態改變。這在純SQL中會非常困難,如果它已經超過90天,我建議添加一個標誌並將其修改爲服務器端 –
這是正確的Joshua,但是我沒有這個選項用於組織原因 –