mysql 常用函数,基本使用

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 

 


 

posted @ 2018-03-05 10:31  鲜花满月楼  阅读(226)  评论(0编辑  收藏  举报