0
幾年後,我回到mysql並遇到問題。我有一個可行的查詢,但我失去了如何更好地優化它。在mysql中限制查詢數據
下面是該查詢:
select
u.id as 'User',
count(distinct tr.id) as Trips,
count(distinct ti.id) as 'Trip Items'
from
users u
inner join
user_emails ue on u.id = ue.user_id
inner join
trips tr on tr.user_id = u.id
inner join
trip_items ti on ti.trip_id = tr.id
where
ue.verified = true and ue.is_primary = true
and
tr.created_at between '2017-02-01 00:00:00' and '2017-02-01 00:59:59'
group by 1
having Trips < 30
我基本上需要得到所有行程和行程中的項目數..但只對那些誰在指定日期範圍內30周或更少的旅行用戶。現在,我正在通過將用戶分組結果,然後執行'擁有'來完成該任務。我正在查看數百萬個非索引字段(created_at)的結果。理想情況下,我想只得到1行,總旅行和總旅行項目。但在查詢過程中仍然應用「用戶少於30次」。這可能嗎? :)
只是一個快速編輯,我試着環顧其他解決方案,但我有點失去了我應該找的東西。我不是在尋找解決方案,可能只是「去檢查一下並嘗試」。
我想給這個一去,它看起來像有一些問題,我無法來解決這些問題!看起來這會返回用戶的結果。所以「User | Trips | TripItems」 - 我試圖弄清楚如何將數據恢復爲「Trips | TripItems」,但仍然對每個用戶應用30或更少的行程限制。我會一直試圖擺弄這個,看看我能看到它的領先地位! – LushJ