多表连接时,找不到连接条件怎么办?教测试人员万能技巧一招破题

Mysql查询题,不仅在面试笔试中的出境评率高,而且非常影响薪资谈判,因为以后的测试工作中也要常常使用,所以地位非常重要。在mysql查询题中,使用频率最高的就是内连接。

内连接中,关键点是找多表的连接条件,比如找两个表意义相同的字段。但而很多时候,这个连接条件并不好找。找不到连接条件,内连接无法做。就算侥幸在面试中没有出现多边连接难题,但是在工作中,必定会出现较难的两表连接,找不到连接条件,怎么破?有没有一种万能技巧,==可以一招破解两表连接条件?有==,特撰写此篇技术文章给大家分享。本文主要分为以下几个步骤:

  1. 第一步, 准备建表语句
  2. 第二步,将建表语句输入到navicat中建立;两个表
  3. 第三步,分析题目“查询所有同学的sno、cno和rank列”
  4. 第四步,介绍寻找两表连接条件的万能技巧
  5. 第五步,做题验证万能技巧
  6. 第六步,总结

一. 第一步 —— 准备建表语句

  1. 准备sql数据
-- # 建立成绩表
CREATE TABLE score (
    sno VARCHAR (20) NOT NULL ,
    cno VARCHAR (20) NOT NULL,
    degree DECIMAL
);

insert into score values('103','3-245','86');
insert into score values('105','3-245','75');
insert into score values('109','3-245','68');
insert into score values('103','3-105','92');
insert into score values('105','3-105','88');
insert into score values('109','3-105','76');
insert into score values('103','3-105','64');
insert into score values('105','3-105','91');
insert into score values('109','3-105','78');
insert into score values('103','6-166','85');
insert into score values('105','6-166','79');
insert into score values('109','6-166','81');

-- # 建立grade表:
create table grade(low  int(3),upp  int(3),rank  char(1));
insert into grade values(90,100,'A');
insert into grade values(80,89,'B');
insert into grade values(70,79,'C');
insert into grade values(60,69,'D');
insert into grade values(0,59,'E');

二.第二步——将建表语句输入到navicat中建立两个表

1)新建数据库test

 

2)将sql语句输入到查询编辑器中,运行

3)创建数据表并黏贴到excel中

三、第三步做题,分析题目“查询所有同学的Sno、Cno和rank列”

  1. 分析题目
sno代表学号,cno代表课程号,rank代表等级,分别来源于成绩score表和grade登记表。所以两表必须内连接
  1. 连接条件
内连接的语法是 select * from 表A inner join 表B on 表A.列=表B.列,on后面就是连接条件,一般都是找两个表意义相同的字段。

3.当前困难

当前问题是,两个表中没有意义相同的字段,怎么办?

四、 第四步 —— 介绍寻找两表连接条件的万能技巧

1、两表不用条件先连接起来,得到一个笛卡尔积(笛卡尔积就是表1的行数*表2的行数得到的结果集,该结果肯定有错误)
2、在此基础上,找出一条正确信息,再找出一条错误信息,分析为什么正确,为什么错误,就能找到连接条件

五、第五步 ——做题验证步技巧

1.两表不用条件先连接起来,得到一个笛卡尔积

2.在此基础上,找出一条正确信息,再找出一条错误信息,分析为什么正确,为什么错误,就能找到连接条件

3.写出带有连接条件的内连接

4.完善题目,得到“查询所有同学的Sno、Cno和rank列”这个结果

六、第六步——总结

1.所求题目“查询所有同学的Sno、Cno和rank列”,其争取的sql语句是:

select sno,cno,rank from score inner join grade on degree between low and upp

2.验证的连接条件的万能方法是:

找出一条正确信息,再找出一条错误信息,分析为什么正确,为什么错误,就能找到连接条件。

以上方法对于容易找到连接条件的题目依然适用,故成为“内连接查找连接条件的万能方法”

是不是万能,赶紧找题目来验证下吧....

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值