• 连接查询简析 join 、 left join 、 right join


    join :取两个表的合集;

    left join:左表的数据全部保留,然后增加右表与左表条件匹配的记录。如下

    select cc.* from cloud_groups as cg  left join cloud_contacts as cc  on  cg.ou=cc.departmentNumber order by cast(cg.sort as int),cast(cc.sort as int)      //先以部门排序,再以员工进行排序

    效果:

    (1)cloud_groups  的内的数据全部保留

    (2)增加 cloud_contacts 表中 cg.ou=cc.departmentNumber 的记录

    right join: 与left join的效果正恰相反。右表的数据全部保留,然后增加与相应条件匹配的记录。

    示例:

    //根据部门编码获取指定部门下员工的数量
    -(NSString *)getStaffCount:(NSString *) code
    {
        NSString *strSql = [[NSString alloc]initWithFormat:@" select count(*) from(select * from cloud_contacts as cc left join cloud_groups as cg on cg.ou=cc.departmentNumber) where code like'%%%@%%'",code];
        NSString *staffCount=nil;
        if([mysqlite openDatabase:@"ucab_db.db"])
        {
            staffCount = [[mysqlite selectintBySQL:strSql] objectAtIndex:0];
            [mysqlite closeDatabase];
        }
        if (nil!=staffCount)
        {
            return staffCount;
        }
        else return @"0";
    }

    关键字:on 是两个表连接查询时的条件,用于筛选笛卡尔积得出临时表。where 是对对临时表进行再次查询!

  • 相关阅读:
    深入理解ThreadLocal
    JAVA守护线程
    JAVA THREAD.JOIN方法详解
    JAVA中断机制详解
    Socket中的异常和参数设置
    WebSocket实战
    程序里面的system.out.println()输出到其他位置,不输出到tomcat控制台。
    数据库连接未关闭,conn与rs未关闭
    Ajax简单应用-购物车
    1.链表和数组的区别在哪里?
  • 原文地址:https://www.cnblogs.com/ygm900/p/3478701.html
Copyright © 2020-2023  润新知