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: 角色 与功能点
SELECT t0.*,IF(t1.role_id = '4d4023a7-db30-11e7-aae9-000c29dce73b',1,0) as is_checked FROM t_boss_function_point t0 LEFT 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 反向递归查询 展示出子类上面所有的父级信息
SELECT T2.ID,T2.Nname FROM ( SELECT @r AS _id, @stop:=@stop+if(@r=2,1,@stop) as stop, (SELECT @r := ParentID FROM BusinessPartCategory WHERE id = _id) AS ParentID, @l := @l + 1 AS lvl FROM (SELECT @r := '填写对应的子类id', @l := 0, @stop:=0) vars, BusinessPartCategory h WHERE @stop < 1) T1 JOIN BusinessPartCategory T2 ON T1._id = T2.ID