1:选中排除
表1 连接表2 表3
获取选中表1中部分选中表3 的部分 并且设置选中状态
select t1.*,if(t2中t3id=t1.id,1,0)as checked from t1
lefet join t3 on t1.id=t2.t1中id
eg: 角色 与功能点
SELECTt0.*,IF(t1.role_id = '4d4023a7-db30-11e7-aae9-000c29dce73b',1,0) asis_checkedFROMt_boss_function_point t0LEFT JOIN t_boss_role_function_point_relation t1 ON t1.function_point_id = t0.id
2:表中字段组合 CONCAT(str1,str2,...) :字符串拼接
3: GROUP_CONCAT() 多数据组合成一起 (在方法内还可以写sql distinct,order by 排序,SEPARATOR 是一个字符串值,它被用于插入到结果值中。缺省为一个逗号 (","),可以通过指定 SEPARATOR "" 完全地移除这个分隔符)
GROUP_CONCAT(' -> ',IFNULL(T2.AliasName,T2.`Name`) ORDER BY T1.lvl DESC SEPARATOR '')
4:if,和ifnull的使用
if(条件1,条件1成立输出他,条件1不成立输出他)
ifnull(字段,字段不为null输出它,字段为null输出它) ps:如果字段为空字符串判断为true
5: DISTINCT 去除掉重复字段
6: not exists 不在条件范围内 取反 多用于子查询反查
not in 基本相同
7 反向递归查询 展示出子类上面所有的父级信息
SELECTT2.ID,T2.NnameFROM(SELECT
@r AS_id,@stop:=@stop+if(@r=2,1,@stop) asstop,
(SELECT @r := ParentID FROM BusinessPartCategory WHERE id = _id) ASParentID,@l := @l + 1 ASlvlFROM(SELECT @r := '填写对应的子类id', @l := 0, @stop:=0) vars,
BusinessPartCategory hWHERE @stop < 1) T1JOINBusinessPartCategory T2ON T1._id = T2.ID