MySQL两表联查,根据不同条件获得不同数据
生活随笔
收集整理的這篇文章主要介紹了
MySQL两表联查,根据不同条件获得不同数据
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
場景:查找某張表中某一列的所有符合某種條件的條目的累加和,且該表和另一張表相關聯
查詢語句:
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需要創建臨時表,查詢完畢后再刪除這些臨時表,所以,子查詢的速度會受到一定的影響,這里多了一個創建和銷毀臨時表的過程。
?
參考:
https://www.cnblogs.com/skysowe/p/9117099.html
https://www.jianshu.com/p/cb1e14c0ac39
總結
以上是生活随笔為你收集整理的MySQL两表联查,根据不同条件获得不同数据的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 用tensorflow还原PSENet网
- 下一篇: linux cmake编译源码,linu