manbetx体育播客旗下品牌:|||||

全国咨询/投诉热线:400-618-4000

Mysql查询题:多表连接,找不到连接条件怎么处理?

更新时间:2020年03月08日19时26分 来源:manbetx体育播客 浏览次数:

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

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

第一步, 准备建表语句

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

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

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

第五步,做题验证万能技巧

第六步,总结

一. 准备建表语句

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

1583661419484_01 新建数据库test.png


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

1583661484387_02 将sql语句输入到查询编辑器中.png


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

1583661492739_03创建数据表并黏贴到excel中1.png

1583661500048_04 创建数据表并黏贴到excel中02.png

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

1. 分析题目

sno代表学号,cno代表课程号,rank代表等级,分别来源于成绩score表和grade登记表。所以两表必须内连接

2. 连接条件

内连接的语法是 select * from 表A inner join 表B on 表A.列=表B.列,on后面就是连接条件,一般都是找两个表意义相同的字段。

3.当前困难

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

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

1、两表不用条件先连接起来,得到一个笛卡尔积(笛卡尔积就是表1的行数*表2的行数得到的结果集,该结果肯定有错误)

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

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

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

    1583661566129_05 两表不用条件先连接起来1 .png

    1583661639328_06 两表不用条件先连接起来2.png


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

1583661623827_07 找出一条正确信息.png

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

1583661659777_08 写出带有连接条件的内连接.png


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

1583661683119_09 得到“查询所有同学的Sno、Cno和rank列.png

六、总结

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

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

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

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

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

是不是万能,赶紧找题目来验证下吧。推荐了解。

猜你喜欢:
HTTPS与HTTP有什么区别?

javaee

python

web

ui

cloud

test

c

netmarket

pm

Linux

movies

robot

uids

北京校区

    14天免费试学

    基础班入门课程限时免费

    申请试学名额

    15天免费试学

    基础班入门课程限时免费

    申请试学名额

    15天免费试学

    基础班入门课程限时免费

    申请试学名额

    15天免费试学

    基础班入门课程限时免费

    申请试学名额

    20天免费试学

    基础班入门课程限时免费

    申请试学名额

    8天免费试学

    基础班入门课程限时免费

    申请试学名额

    20天免费试学

    基础班入门课程限时免费

    申请试学名额

    5天免费试学

    基础班入门课程限时免费

    申请试学名额

    0天免费试学

    基础班入门课程限时免费

    申请试学名额

    12天免费试学

    基础班入门课程限时免费

    申请试学名额

    5天免费试学

    基础班入门课程限时免费

    申请试学名额

    5天免费试学

    基础班入门课程限时免费

    申请试学名额

    10天免费试学

    基础班入门课程限时免费

    申请试学名额