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的表
B/ 加在WHERE語句中,被JOIN的表若無效項,則整個資料行會被過濾掉。
COUNT遇上GROUP BY
如果不加GROUP BY,COUNT單用含義則為“統計總數”,這樣COUNT下來只有一行,按GROUP
BY才能按指定引數聚合;
據說是PM的必備技能的SQL,PM齡3年的我仍然菜鳥,今天開始用心學學