查詢語句:
select distinct
ifnull((select sum(『列名』) from a, b where a.id = b.id and a.condition=condition1 and b.condition = condition2),0) as '條件1下的資料' ,
ifnull((select sum(『列名』) from a, b where a.id = b.id and a.condition=condition3 and b.condition = condition4),0) as '條件2下的資料'
from a, b where a.id = b.id
缺點:資料量一太大就會be崩潰
優化後語句:
select 『別名1』, 『別名2』
from
(select ifnull(sum(『列名』),0) 『別名1』 from a, b where a.id = b.id and a.condition=condition1 and b.condition = condition2),0) t1
left join
(select ifnull(sum(『列名』),0) 『別名2』 from a, b where a.id = b.id and a.condition=condition3 and b.condition = condition4) t2 on 1=1
left join查詢比select巢狀查詢效率高的原因:執行子查詢時,mysql需要建立臨時表,查詢完畢後再刪除這些臨時表,所以,子查詢的速度會受到一定的影響,這裡多了乙個建立和銷毀臨時表的過程。
參考:
根據字段不同值關聯查詢不同表的問題
我有四個表 前三個分別為活動表 activity 部落格表 blog 和課程表 course 表結構基本一樣,都是發表內容的,有title和content欄位,第四個表為動態表 dynamic 當使用者參加活動,發表部落格和學習課程的時候,都會在動態表中進行記錄,動態表中有type欄位表示此條記錄是...
mysql根據不同條件統計後合併顯示
記錄下開發中遇到的事情,假設有如下表test idnum time 1123 2019 01 01 11 11 11 2666 2019 01 01 11 11 11 需要統計time小於等於某月份的num總數,以及time等於月份num數。一開始的想法是使用子查詢 select sum a.num...
DataTemplate 根據條件選擇不同模板
msdn datatemplate 為了不同的條件選擇模板,可以實現乙個datatemplateselector。1 模板選擇器是繼承自datatemplateselector,並重寫了selecttemplate方法並返回所需要的模板的類 public class persontemplatese...