1. 程式人生 > >SQL中幾個簡單的函式:LEFT JOIN;COUNT遇上GROUP BY

SQL中幾個簡單的函式:LEFT JOIN;COUNT遇上GROUP BY

概要:函式LEFT JOIN與COUNT/GROUP BY的使用,以及為AND篩選限制條件的合適位置

SQL:

SELECT DISTINCT att.attributes_templates_id,att.attributes_templates_name,COUNT(p.products_id) FROM attributes_templates att

LEFT JOIN categories_to_templates ctt ON att.`attributes_templates_id` = ctt.`templates_id`

LEFT JOIN categories c ON ctt.`categories_id` = c.`categories_id` and c.`objects_status_id` = 1

LEFT JOIN products p ON c.`categories_id` = p.`categories_id` and p.`objects_status_id` = 1

group by att.attributes_templates_id

註釋:

關於LEFT JOIN,及AND篩選限制條件的位置

用於限制資料有效狀態的c.`objects_status_id` = 1,p.`objects_status_id` = 1,放在LEFT JOIN和放在WHERE語句中,得到的結果錶行數是不同的

A/ 加在LEFT JOIN語句中(即使是LEFT JOIN,不是JOIN哦),被LEFT JOIN的表

存在無效項,則會記為NULL,但整個資料行會保留;

B/ 加在WHERE語句中,被JOIN的表若無效項,則整個資料行會被過濾掉。

COUNT遇上GROUP BY

如果不加GROUP BY,COUNT單用含義則為“統計總數”,這樣COUNT下來只有一行,按GROUP BY才能按指定引數聚合;

據說是PM的必備技能的SQL,PM齡3年的我仍然菜鳥,今天開始用心學學