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年的我仍然菜鸟,今天开始用心学学








展开阅读全文

没有更多推荐了,返回首页