学生表
那么现在有两个需求:
1:找出每个班级的名称及其对应的女同学数量
2:找出一班的同学总数
如果想对右表进行限制,则一定要在on条件中进行,若在where中进行则可能导致数据缺失,导致左表在右表中无匹配行的行在最终结果中不出现;(即使右表中没有数据也要补0进行显示)
如果想对左表进行限制,则一定要在where条件中进行;(右表中没有符合条件的数据,则不显示)
select a.ID,a.TID,a.NAME,b.DATE from (select b.ID,b.TID,b.DATE from B order by ID desc) as b left join A as a on a.TID=b.TID group by b.TID
而且你的表述有问题
1、等于说是 A表全部显示 且显示B 当中跟他关联的TID 最大的 那条记录值
这里应该是:当中跟他关联的ID 最大的
2、达到的效果也不对,因为B表的值写错了。
项目中某个业务列表查询发现速度略慢,看了下sql只是正常的关联查询,并且是小表驱动大表了,explain分析一下之后发现居然是全表扫描
导致该问题的原因是关联字段类型不一致,导致索引失效,我们看一下关联字段的字符集
执行修改语句,将关联字段字符集调整为一致
ALTER TABLE groupon_goods_info CHANGE goods_info_id VARCHAR(32) CHARACTER SET utf8 COLLATE utf8_general_ci
修改之后的查询速度
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)