当我进行left join查询时需要关联的右表需要过滤数据,我们不能再全局的where加条件,因为会影响最终结果,只需要再on后面加上and条件即可,例如
SELECT a.id, a.NAME, a.CODE, ifnull( b.id, 0 ) bid FROM `think_course` `a` LEFT JOIN `think_user_collect_course` `b` ON `a`.`id` = b.course_id AND b.STATUS = 1 WHERE `a`.`professions_id` = '113'
例如我只想要右表STATUS=1的数据进行连表查询,直接在on条件上面加where
在项目中发现大量的form连接表,就开始质疑inner join 和 form a,b的性能问题。找到一份有价值的资料,特别记录:ANSI SQL规范首选INNER JOIN语法。此外,尽管使用WHERE子句定义联结的确比较简单,但是使用明确的联结语法能够确保不会忘记联结条件,有时候这样做也能影响性...
(1).下面是一张基本的会员表membermid name age 1 高峰 24 2 王小 19 3 韩星 24(2).下面是一张基本的会员日志表loglid ...
(1).查询至少有2条订单的客户:SELECT cust_id, COUNT( * ) AS orders FROM orders GROUP BY cust_id HAVING orders ...
项目中对接一个单点登陆的回调api,需要判断用户是否在库,不在库新增用户,在库更新登陆次数,大概代码如下:<?php $isExist = true; if ($isExist) { insert([ &...
【一】.概念查询缓存,就是将查询结果缓存起来,如果遇到相同的Sql查询,直接从缓存中读取结果。例如在一个商城中的商品分类是不会经常变动的,完全可以走缓存,没必要每次从磁盘中读取。【二】.查询缓存开启状态执行Sql:show VARIABLES like &n...
假设有个会员表,auth字段代表拥有的权限,其中1代表查看、2代表修改 、3代表新增 4代表删除,现在需要查询拥有新增权限的用户。先看看会员表:select * from memberid name auth 1 gao 1,2,3 2 chen 3 3 z...