簡體   English   中英

將多個MySQL子查詢合並為一個

[英]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

我正在嘗試提高速度,將三個子查詢合並為一個似乎是一個好主意。

我的問題是我不確定是否可以從單個子查詢中輸出多個值……以及如何編寫單個查詢。 我懷疑它將涉及IFCASEWHEN但是我不確定...

嘗試:

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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM