MySQL兩表聯查,根據不同條件獲得不同資料

2021-10-04 03:12:01 字數 854 閱讀 4157

查詢語句:

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...