精华内容
下载资源
问答
  • 2018-08-18 12:06:55

    相关子查询:

    比如

    select t.id,t.name,t.pass from student t where 80<=(select f.score from f
     where f.id=t.id and f.name='xxx') 

    这就是1个相关子查询,可以理解为2层循环,要想执行内层的查询,需要先从外层查询到1个值出来。

    执行的顺序是,父查询1个值,子查询对这个得到的值进行1轮查询,总查询次数是m*n

    因为子查询需要父查询的结果才能执行,所以叫相关子查询

     

    不相关子查询:

    比如:

    select t.id,t.name,t.pass from t where t.id in (select f.id from  f where f.score=70) 

    这就是1个不相关子查询,子查询的不需要父查询把结果传进来,所以叫不相关子查询

    执行顺序是子查询先执行,得到结果后传给父查询,父查询就不用每次查询完1个值后再执行1轮子查询

    由于2个查询是分开的,无关联的,所以叫不相关子查询,查询次数是m+n

    更多相关内容
  • 1.不相关子查询 引入:查询薪资比"clark"高的所有员工信息 select sal from emp where ename="clark";-- 查询薪资为2450 select * from emp where sal>2450 也可以这样写 select * from emp where sal>...

    1.不相关子查询
    引入:查询薪资比"clark"高的所有员工信息

    select sal from emp where ename="clark";-- 查询薪资为2450
    select * from emp where sal>2450
    

    也可以这样写

    select * from emp where sal>(select sal from emp where ename="clark")
    

    特点:含有多个select,先执行子查询再执行外查询,其中子查询可以独立运行,即:不相干子查询
    (1)单行子查询
    查询工资高于平均工资的雇员名字和工资。

    select ename,sal from emp where sal>(select avg(sal)from emp) order by sal 
    

    在这里插入图片描述
    查询和CLARK同一部门且比他工资低的雇员名字和工资。

    select ename,sal,deptno from emp where deptno=(select deptno from emp where ename="clark") and sal<(select sal from emp where ename ="clark")
    

    在这里插入图片描述
    查询职务和SCOTT相同,比SCOTT雇佣时间早的雇员信息

    select * from emp where job=(select  job from emp where ename="scott" )and hiredate <(select hiredate from emp where  ename="scott")
    

    在这里插入图片描述
    (2)多行子查询

    查询工资低于任意一个“CLERK”的工资的雇员信息。

    select * from emp where sal<any(select sal from emp where job="clerk") and job!="clerk"
    

    在这里插入图片描述

    查询工资比所有的“SALESMAN”都高的雇员的编号、名字和工资。

    select empno,ename,sal from emp where sal>all(select sal from emp where job="SALESMAN")
    select empno,ename,sal from emp where sal>(select max(sal) from emp where job="SALESMAN")
    

    在这里插入图片描述

    查询部门20中职务同部门10的雇员职务一样的雇员信息。

    select *  from emp where deptno=20 and job in(select job from emp where deptno=10)
    select * from emp where deptno=20 and job=any(select job from emp where deptno=10)
    

    在这里插入图片描述
    2.相关子查询:子查询不能独立运行,必须先执行外部查询再执行子查询
    查询本部门最高工资的员工信息

    select * from emp e1 where sal=(select max(sal) from emp e2 where e1.deptno=e2.deptno)
    

    在这里插入图片描述

    查询[工资高于其所在岗位的平均工资的]那些员工

    select * from emp e1 where sal>(select avg(sal) from emp e2 where e1.job=e2.job)
    

    在这里插入图片描述
    3 子查询和连接查询结合使用
    查询每个部门平均薪水

    select deptno,avg(sal) 
    from emp 
    group by deptno
    

    查询[每个人的薪水]的等级

    select *
    from emp e
    join salgrade sg
    on(e.sal between sg.losal and sg.hisal)
    

    查询[每个部门平均薪水]的等级

    select *
    from (select deptno ,avg(sal) asl
    from emp 
    group by deptno )asg 
    join salgrade sg 
    on asg.asl between sg.losal and sg.hisal
    

    在这里插入图片描述

    展开全文
  •  相关子查询中一般都会有表的连接操作(因为查询是相互依赖的),而非相关子查询不一定需要(查询相互独立,相当于一张新表)。 上面这个是exists 谓词查询结果 这个是in 谓词的查询结果。 所以在相关子查询中...

    学生表

    课程表

    学生选课表


    学生表:Student(Sno,Sname,Sex,Sage,Sdept)

    学号Sno      姓名Sname 性别Sex 年龄Sage 所在系Sdept

    201215121 李勇              男              20        CS

    201215122 刘晨              女              20        CS

    201215123 王敏              女              18        MA

    201215125 张立              男              19        IS


    课程表:Course(Cno,Cname,Cpno,Ccredit)

    课程号Cno 课程名Cname 先行课Cpno 学分Ccredir

    1                数据库             5                       4

    2                数学                 3

    3               信息系统           1                      4

    4               操作系统           6                      3

    5               数据结构           7                      4

    6               数据处理           2

    7               PASCAL语言     5                     4


    学生选课表:SC(Sno,Cno,Garde)

    学号Sno   课程号Cno 成绩Grade

    201215121     1          92

    201215121     2          85

    201215121     3          88

    201215122     2          90

    201215122     3          80


    在目前看来,还没有一篇的博文能解决我一开始所迷惑的问题,现在我将自己领悟的结果分享给大家,应该可以让你们在理解相关子查询和非相关子查询时少花一些时间。

    1.  首先呢,EXISTS适合用于外表小而内表大的情况,IN适合于外表大而内表小的情况。

        IN谓词的非相关子查询查询过程是由内到外,并且是将内层子查询的整个结果集返回到外层。需要注意的是IN谓词查询是遇到 相等值的时候则查询为真并存入结果集,得到的相当于一张新表。

         EXISTS谓词的子查询的查询过程是由外到内,是将每一个元组都执行一次由外到内的查询,若返回值为真则将查询结果显示。并且查询是遇到非空则为真。例如EXISTS  P 表示P不为空时为真;NOT EXISTS   P 表示P为空时为真。 

    2.   因为相关子查询是判断是否为空,而非相关子查询是判断值是否相等,所以相关子查询能够解决“至少包含”(蕴涵)问题而非相关子查询不能。  因此我们就知道了什么时候该用相关子查询,什么时候该用非相关子查询。

    3.   相关子查询中一般都会有表的连接操作(因为查询是相互依赖的),而非相关子查询不一定需要(查询相互独立,相当于一张新表)。

     上面这个是exists 谓词查询结果

    这个是in 谓词的查询结果。

    所以在相关子查询中如果设计多个表就必须要有表的连接。


    下面我们来解决一下这个经典的EXISTS 相关子查询问题,理解了这个问题也就可以举一反三了。



    对于这段语句,我们代入数据理解一下, 最外层查询select sno from sc scx   中scx是给sc起了一个别名,然后将scx的每一个元组传入内层查询,查询结果就是整个sc表:


    学号Sno   课程号Cno 成绩Grade

    201215121     1          92

    201215121     2          85

    201215121     3          88

    201215122     2          90

    201215122     3          80


    第二层查询是 select * from sc scy where  scy.sno='201215122' ,那么查询结果就是:


    sno                cno        grade

    201215122     2          90

    201215122     3          80


    上面这两层查询都好理解,那么最难理解的第三层查询来了

    select  * from sc scz where scz.sno= scx.sno AND scz.cno=scy.cno;

    理解这个的关键就在于理解   scy.cno ,在第层的查询中 scy.cno应该是‘2’ or ‘3’。也就是说scy表其实就是第二层的查询结果。  下面给大家上图看看

     

     

    那么我们再按照题解分析一下查询逻辑:

    SELECT SNO 
    FROM sc scx
    WHERE not EXISTS
    (SELECT * from sc scy     WHERE scy.sno='201215122' and not exists
                (SELECT * from sc scz WHERE scz.sno =scx.sno and scz.cno=scy.cno));
    问题:  查询至少选修了学号为‘201215122’学生选修的全部课程的学生学号。

    1.问题最终是要找学号,所以第一层就一个是SELECT SNO FROM sc scx

    2.第二我们就要找到‘201215122’学生所选修的课程有哪些?SELECT * from sc scy    WHERE scy.sno='201215122'

    3.现在学号有了,课程有了,还差符合条件的学生,所以第三层就是找符合条件的学生的

    SELECT * from sc scz WHERE scz.sno =scx.sno and scz.cno=scy.cno

    scz.cno=scy.cno这个语句就是将选修了课程的学生选出来,所以scz.sno就是至少选修了2或3 号课程的学生学号。

    scz.sno =scx.sno这条语句是将表scz和scx连接起来,因为我们前面说过,涉及两个表时需要用连接。

    然后根据学号在scx中选出结果


           希望对大家能有帮助,欢迎留言讨论!

    展开全文
  • 连接查询 连接是一个操作,允许查询两个或两个以上的表(或视图),形成单个结果集,其中包括来自每个表的行和列。 有两种连接,分别是内部连接、外部连接。 内部连接又包括等值连接(=)、自然连接、非等值连接...

    连接查询

            连接是一个操作,允许查询两个或两个以上的表(或视图),形成单个结果集,其中包括来自每个表的行和列。

            有两种连接,分别是内部连接外部连接

            内部连接又包括等值连接(=)、自然连接、非等值连接(除了=以外的连接)等;

            外部连接包括左外部连接、右外部连接等。

          1、等值与非等值连接查询(内连接)

              用来连接两个表的条件称为连接条件或连接谓词,一般格式:

    [<表名1>.]<列名1><比较运算符>[<表名2>.]<列名2>

            
             比较运算符: =(等值连接)、>、>=、<、<=、!=(<>)
            当连接运算符为“=”时,称为等值连接,使用其它运算符称为非等值连接

            连接谓词中的列名称为连接字段。连接条件中的各连接字段类型必须是可比的,但名字不必相同(自然连接除外(自然连接名字必须相同))。

            例1:

            两个表实现笛卡尔集。

    SELECT * FROM student,course;
    或
    SELECT*FROM student CROSS JOIN course

            例2:

            查询每个学生及其选修课程的情况。

    SELECT student.* sc.* 
    /* student.*是把student表中的所有列放到结果表中,sc.*是把sc表中的所有列放到结果表中 */
    FROM student,sc
    WHERE student.Sno =sc.sno;
    /* select from where 是传统的格式 */
    或
    SELECT student.*,SC.*
    FROM student INNER JOIN SC ON student.sno = sc.sno;
     /* 这里是等号,所以是等值连接(内连接) */
     /* INNER JOIN 表示的是内连接,这个是现代的格式 */
    两种方式结果和过程都一样!

    分析执行过程(教材p100)。

    :上面代码把两个表的列都加入结果了,一般不会这样做,应该明确指出连接哪些列。

     

    SELECT student.sno,sname,cno,grade
    /* 因为sno可以来自 student 表也可以来自 sc 表,所以需要加上前缀student或sc */
    FROM student INNER JOIN sc ON student.sno = sc.sno
    /*此方法也实现了自然连接(去掉了重复属性)*/

            例3:

            查询学生的学号,姓名,选课课号,成绩。

            例4:
            查询学生的学号(可以来自student表也可以来自sc表),姓名(student表),选课名(course表),成绩(sc表)。(三个表作内连接)

     

    SELECT student.sno,sname,cname,grade
    FROM student INNER JOIN sc ON student.Sno=sc.sno INNER
    JOIN course ON sc.cno = course.cno;
    或
    SELECT student.sno,sname,cname, grade
    FROM student,sc,course
    Where student.Sno=sc.sno and sc.cno=course.cno;

            2、自身连接(内连接,自身连接的过程中,表名是一样的,所以需要将表起别名)

            连接操作不仅可以在两个表之间进行,也可以是一个表与其自身进行连接,称为表的自身连接
            例:

            查询每一门课的间接先修课(即先修课的先修课,如:学1号课程需要先修5号课程,学5号课程需要先修7号课程)。
            分析:要找一门课的先修课的先修课,必须先对一门课找到其先修课,再按此先修课的课程号,查找它的先修课程,这就要将 course表与其自身连接。(即:先将两个表做笛卡尔积,然后筛选出1号表的先修课等于2号表的后修课)

    SELECT FIRST.Cno,SECOND.Cpno
    FROM Course FIRST , Course SECOND
    /* 自身连接的过程中,表名是一样的,所以需要将表起别名 */
    WHERE FIRST.Cpno=SECOND.Cno;

            练习:
            1、查询课程号,课程名,先修课程程号,先修课程名
            2、查询学生201215121选修课程的总学分
            3、统计每个学生的选修课程门数和总学分,以学号、门数和总学分作为结果列

            1、这里注意给自身表格命名(a , b),以便区分,还有查询的时候也要使用表格名区分

    select a.cno,a.cname,b.cno,b.cname
    from course a,course b
    where a.cpno=b.cno
    或
    select a.cno,a.cname,b.cno,b.cname
    from course a inner join course b on a.cpno=b.cno

            2、注意sum的用法和字符串不要抄错

    select sum(ccredit) from  course,sc
    where sc.sno='201215121'and sc.cno=course.cno;
    或
    select sum(ccredit) 总和 from sc inner join course on sc.cno=course.cno
    where sno='201215121';

            3、思路:

                    (1)将sc表和course表在课程号列上进行自然连接

                    (2)按学号进行分组,在组内进行聚合(求总学分和选课门数)

    select sno 学号,count(*) 门数,sum(ccredit) 总学分
    /* count(*)统计组内元组条数,sum(ccredit)对组内学分进行求和 */
    from sc,course
    /* 来自 sc 表和 course 表 */
    where sc.cno=course.cno
    /* 两个表进行自然连接 */
    group by sno;
    /* 按学号进行分组 */

     3、外连接

            外部联接除返回匹配联接条件的绑定行外,还返回来自某个表的不匹配行。

            如果包含左表的不匹配行,这种联接称为左外部联接:

            如果包含右表的不匹配行,这种联接称为右外部联接:

            如果包含左右两个表的不匹配行,这种联接称为完整外部联接

            这些不匹配行对应另一个表中的列将被设置为空值(不授原字段是否为空限制)。

            注意:外部连接可以用在年终统计所有产品销售情况的时候(包括销售件数为 0 的情况),使用内连接不会统计销售件数为 0 的情况
            例:查询每个学生及其选修课程的情况。

    SELECT Student.Sno,Sname,Ssex,Sage,Sdept,Cno,Grade
    FROM Student LEFT OUTER JOIN SC ON(Student.Sno=SC.Sno);
    /* student表为结果的左表,左外连接到结果集 */
    /* 满足 student.sno = sc.sno 条件的结果加入到结果集中 */
    /* 因为是做外部连接,所以会把没有满足条件的student的列加入到结果集中
       且student表中没有sc表中的列均取空值 */
    /* left outer join 外部连接 在left outer join 的左侧称为左外部连接*/

    嵌套查询(将复杂的查询分解成一系列的步骤,并使用单一的语句解决子问题)

            概念:

            在SQL语言中,一个SELECT-FROM-WHERE语句称为一个查询块

            将一个查询块嵌套在另一个SQL语句的WHERE子句或HAVING短语的条件中的查询称为嵌套查询(两层查询)上层的查询块称为外部查询父查询下层查询块称为内层查询子查询

            子查询是一个查询块,嵌套在SELECT、INSERT、UPDATE和DELETE语句中或另一个子查询内部,返回单个值单列值

           不相关子查询:

             子查询查询条件不依赖父查询。是由里向外逐层处理。

             即每个子查询在上一级查询处理之前求解,子查询的结果用于建立其父查询的查找条件。

           相关子查询:

            子查询的查询条件依赖于父查询

            首先取外层查询(父查询)中表的第一个元组,根据它与内层查询相关的属性值处理内层有
    询,若WHERE子句返回为真,则取此元组放入结果表;然后再取外层表下一个元组;重复这一过程,直至外层表全部检查完为1

          何时使用子查询:

            使用子查询将复杂的查询分解成一系列逻辑步骤,并使用单一的语句解决问题。当查询依赖于另一个查询的经果时,子查询很有用。 

          嵌套查询的格式:(3种)

            包括子查询的语句通常采用以下格式中的一种:
           (1) WHERE expression [NOT] IN (subquery)

                    通过IN引入的列表上进行操作。(子查询(subquery)需要使用小括号括起来)
           (2) WHERE expression comparison_operator[ANY|ALL](subquery)
                    通过比较运算符引入,并且必须返回单个值(加了any和all就可以返回多个值)。
           (3)WHERENOTEXISTS(subquery)

                    通过EXISTS引入的存在测试。

            使用子查询的准则:

            (1)必须将子查询放置在小括号中。

            (2)在返回数值的子查询选择列表(select后面)中只使用一个表达式列名

            (3)不能在包含文本图像数据类型的列上使用子查询。

            (4)根据需要,可以使用多级子查询,没有限制(一般嵌套2-3层即可,多了不好)。

            (5)子查询不能使用ORDER BY子句(对查询的结果按关键字排序)。 

          1、使用IN/NOT IN引入的子查询

            此子查询返回的结果。用来判断某个值是否在子查询的结果集中。

            基本语法为:  WHERE expression [NOT] IN (subquery)

            注:(subquery)处可以返回多个值

            例:

            查询计算机系学生的学号,课程号,成绩信息。

    select sno,cno,grade
    from sc
    where sno in (select sno from student where sdept='CS');
    /* 会先执行in 里面的语句,先筛选除计算机系的学生,再查询学号等信息 */

            步骤:

            ①查询计算机系学生的学号(201215121,201215122)

            ②查询这两名学生的学号,课程号,成绩信息

            此查询为不相关子查询,用自身连接也能完成查询要求。

            例:

            查询选修了课程名为“信息系统”的学生学号和姓名。
     

    select sno,sname 
    /* 3、最后在Student关系中取出 Sno 和 Sname */
    from student
    where sno in
    	(
    	select sno
        /* 2、然后在SC关系中找出选修了3号课程的学生学号 */
    	from sc
    	where cno in
    		(
    		select cno
    		from course
    		where cname='信息系统' 
            /*1、首先在Course关系中找出“信息系统”的课程号,结果为3号*/
    		)
    	);

    展开全文
  • 在学到子查询的时候,本来就是感觉很简单,优先执行子查询,即括号里面的查询,用返回的值再执行主查询即可,但是在一个练习题中用到了这样一个sql。 #用于统计各个部门中的员工数 SELECT d.*,(SELECT COUNT(*) FROM...
  • image.png image.png 可见,该子查询未被优化成连接查询,也因为字符集的原因没走uk_classroom_id索引 四、总结 连接查询、子查询都有可能因为字符集不同导致查询不走索引。 不是字符集不同,连接查询、子查询就...
  • 我们进行数据查询的时候极少有可能就在一张表里就能得到想要的数据,可避免得会用到子查询或者连接查询,很多时候我们很轻松自然的会想到子查询的方法,但是子查询往往效率比较低,而转换成连接查询是一种很好的...
  • 我们进行数据查询的时候极少有可能就在一张表里就能得到想要的数据,可避免得会用到子查询或者连接查询,很多时候我们很轻松自然得会想到子查询的方法,但是子查询往往效率比较低,而转换成连接查询是一种很好的...
  • ※MySQL中的字符编码(注意,utf8中没有'-',跟Java中一样)SHOW VARIABLES; //查看系统变量//查询字符编码相关的系统变量SHOW VARIABLES WHERE variable_name LIKE 'character%';解决MySQK的中文乱码:character_set...
  • 查询与外连接查询连接总结 下面三个表会用到 Student Course Choise 子查询 常见的形式如下 //查询与张彬相同性别的学生姓名和性别 Select s_name,s_sex From Student Where s_sex = (Select s_sex ...
  • # 子查询 -- any的用法 select num2 from t2 where num2 > any(select num1 from t1); 运行结果: -- exists的使用(返回True,外层sql语句执行;返回False,外层sql执行) select * from score ...
  • MySQL 5.7 ref ——13.2.10.10优化子查询十、子查询的优化开发正在进行中,因此从长远来看,没有什么优化建议是可靠的。以下列表提供了一些您可能想要使用的有趣技巧。See also Section8.2.2, “Optimizing ...
  • 一、连接查询 连接查询:同时涉及两个以上的表的查询 [<表名1>.]<列名1> <比较运算符> [<表名2>.]<列名2> 连接字段:连接条件中的列名称 如:Sno为上面例子中的连接字段 注意:连接...
  • 连接查询连接查询:同时涉及多个表的查询 连接条件或连接谓词:用来连接两个表的条件 一般格式: [<表名1>.]<列名1> <比较运算符> [<表名2>.]<列名2> [<表名1>.]<列名1> BETWEEN [<表名2>.]<列名2> AND [<表名2>.]...
  • 在我所做的题解中有一部分不是最优解,还有很多高效的查询方式,比如最后一题的解答,我有三种方式解答,但是最后的一种才是最简单的行列的方式。 在这些题目中使用最多的就是join多表连接查询 表的基础结构与...
  • (1)NOT IN的相关子查询可以改用LEFT JOIN代替写法。比如: SELECT PUB_NAME FROM PUBLISHERS WHERE PUB_ID NOT IN (SELECT PUB_ID FROM TITLES WHERE TYPE = 'BUSINESS') 我们用左外连接语句...
  • Oracle子查询连接

    2022-05-07 18:20:12
    查询: 相关子查询: 非相关子查询(标准子查询):单行多列--一个值 单列多行--一个列 多列 --一个表 相关子查询和非相关子查询的区别: 1.非相关子查询的子查询结果供主查询使用 子查询先于主查询执行 子查询可以...
  • MySQL对子查询的优化

    万次阅读 2021-09-13 20:17:26
    查询语法 在一个查询语句A里的某个位置也可以有另一个查询语句B,这个出现在A 语句的某个位置中的查询B就被称为子查询,A也被称之为外层查询。子查询可 以在一个外层查询的各种位置出现, 子查询出现在SELECT子句...
  • 例3.42 查询每个学生及其选修课课程的情况 SELECT STUDENT.*,SC.* FROM STUDENT,SC WHERE STUDENT.SNO=SC.SNO; 当去掉 where 子句 这就是笛卡尔乘积 例3.50 对例3.49用自然连接完成 SELECT STUDENT.SNO,SNAME,...
  • 1 DQL-Select查询数据 1.1 语法树 [WITH CommonTableExpression (, CommonTableExpression)*] SELECT [ALL | DISTINCT] select_expr, select_expr, ... FROM table_reference [WHERE where_condition] [GROUP BY...
  • 查询规划的主要工作由grouping_planner函数完成。在具体实现的时候,针对postgresql中独有的继承表,程序使用inheritance_planner函数来解决,该函数主要是先将继承表的继承关系变换为非继承表来处理,然后仍然调用...
  • 笔记:3.4 《数据库系统概论》之数据查询---SELECT(单表查询连接查询、嵌套查询、集合查询、多表查询
  • 1.连接查询连接连接时用比较运算符比较要连接列的值的连接。 1.等值查询 用来连接两个表的条件称为连接条件或连接谓词,其一般格式如下: [&lt;表名1&gt;.]&lt;列名1&gt;&lt;比较...
  • 单表查询(1)选择表中的若干列① 查询指定列② 查询全部列③ 查询经过计算的值❶ 算术表达式❷ 字符串常量及函数❸ 使用列别名改变查询结果的列标题(2)选择表中的若干元组(行)① 关键词DISTINCT去掉表中重复的...
  • 查询的SELECT语句能使用ORDER BY子句,因为它只能对最终的查询结果进行排序。 一、带有IN谓词的子查询查询的结果是一个集合时使用 例3.55 查询与“刘晨”在同一个系学习的学生 (1)先分布进行查询,先找到刘晨...
  • sql子查询

    2019-05-28 09:04:49
    有助于目录的生成如何改变文本的样式插入链接与图片如何插入一段漂亮的代码片生成一个适合你的列表创建一个表格设定内容居中、居左、居右SmartyPants创建一个自定义列表如何创建一个注脚注释也是必可少的KaTeX数学...
  • 今天学习了连接查询和嵌套查询连接查询:涉及两个及以上的表的查询。 嵌套查询: 今天启动SQL server,显示无法连接到服务器,重新打开软件还是一样,后来通过搜索重新启动了SQL server的服务,就可以了。 此电脑...
  • 资料来自剑破冰山Oracle开发艺术--仅做学习使用 这里主要分析组合列NOT IN 非相关子查询中NULL的问题。对于单列,如果NOT IN非相关子查询中有NULL,则没有结果,可以使用NOT IN相关子查询、NOT EXI...
  • 多表查询 交叉查询 ##########交叉查询(没用)或者笛卡尔积查询:多个表的数据的乘积 #问题:大量数据的冗余 , 在多表查询中 多表查询建立在笛卡尔积的基础上 ##语法:select * from A , B, C,D..... SELECT * FROM ...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 2,585
精华内容 1,034
关键字:

不相关子查询如何转换成连接查询

友情链接: RESOLUTION.rar