[英]Combining multiple MySQL subqueries into one
我有一個查詢,其中包含三個子查詢:
select
*,
(select count(*) from v2_page_views left join v2_pages on v2_page_views.pageID=v2_pages.pageID where v2_page_views.siteID=1 and userID=v2_users.userID and pageTemperature=0) cold,
(select count(*) from v2_page_views left join v2_pages on v2_page_views.pageID=v2_pages.pageID where v2_page_views.siteID=1 and userID=v2_users.userID and pageTemperature=1) warm,
(select count(*) from v2_page_views left join v2_pages on v2_page_views.pageID=v2_pages.pageID where v2_page_views.siteID=1 and userID=v2_users.userID and pageTemperature=2) hot
from v2_page_views
left join v2_users on v2_page_views.userID=v2_users.userID
我正在嘗試提高速度,將三個子查詢合並為一個似乎是一個好主意。
我的問題是我不確定是否可以從單個子查詢中輸出多個值……以及如何編寫單個查詢。 我懷疑它將涉及IF
, CASE
和WHEN
但是我不確定...
嘗試:
select v2_page_views.columnThatIsId
sum(case when pageTemperature=0 then 1 else 0 end) cold,
sum(case when pageTemperature=1 then 1 else 0 end) warm,
sum(case when pageTemperature=2 then 1 else 0 end) hot
from v2_page_views
left join v2_users
on v2_page_views.userID=v2_users.userID
where v2_page_views.siteID=1
group by v2_page_views.columnThatIsId
如果您需要其他列,只需將其與所需的表連接即可。 請注意完整地維護組,以免產生錯誤的值。
對於這個特定的解決方案,我甚至不需要左聯接,因為該表中沒有任何內容。 這只是一個提示。 如果您仍然無法找出整個解決方案,請告訴我,我將對其進行編輯。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.