首页 > 数据库 >MySql - 基础学习 - 联表查询

MySql - 基础学习 - 联表查询

时间:2022-11-08 22:48:29浏览次数:44  
标签:JOIN gradename 查询 联表 MySql join id SELECT

一.联表查询

-- 联表查询
/*
思路
1.需求分析,分析查询的字段来自于那张表(连接查询)
2.确定使用那种查询方式
3.确定交叉点(两张表中什么数据是相同的)
4.判断条件`student`
*/
-- inner join
SELECT s.`id`,`name`,`paw`,`gradename`
FROM student AS s
INNER JOIN grade AS g
ON s.id=g.`gradeid`
--  right join
SELECT s.`id`,`name`,`paw`,`gradename`
FROM student AS s
RIGHT JOIN grade AS g
ON s.id=g.`gradeid`
-- left join
SELECT s.`id`,`name`,`paw`,`gradename`
FROM student AS s
LEFT JOIN grade AS g
ON s.id=g.`gradeid`
操作 描述
inner  join 如果表两个都有,就返回
left  join 会从左边中返回值,即使右表中没有匹配的值
right  join 会从右边中返回值,即使左表中没有匹配的值

join(连接的表)  on(判断条件)   连接查询

where                                                等值查询

on和where可以联用

一般join  后面直接跟着on

SELECT s.`id`,`name`,`paw`,`gradename`
FROM student AS s
LEFT JOIN grade AS g
ON s.id=g.`gradeid`
WHERE gradename IS NULL

三表查询

SELECT s.`id`,st.`name`,`gradename`,st.`sex`
FROM student AS s
LEFT JOIN grade AS g
ON s.id = g.gradeid
RIGHT JOIN stdent1 AS st
ON s.id=st.id

不管是几表查询,都要记住我们的思路,要查询n张表中,我们要最先建立两张表联查,然后再增加,一步一步的慢慢增加查询

1.需求分析,分析查询的字段来自于那张表(连接查询)
2.确定使用那种查询方式
3.确定交叉点(两张表中什么数据是相同的)on
4.判断条件  where

二.自联接

自己和自己的表连接,核心:把一张表拆成两张表

 

父类

categoryid categoryName
2 信息技术
3 软件开发
5 美术设计

子类

pid(父id) categoryid categoryName
3 4 数据库
2 8 办公信息
3 6 web开发
5 7 美术设计

 

操作:查询父类对应的子类关系

父类 子类
信息技术 办公信息
软件开发 数据库
软件开发 web开发
美术设计 ps技术
SELECT a.`categoryName` AS '父栏目',b.`categoryName` AS '子栏目'
FROM `category` AS a
INNER JOIN `category` AS b
ON a.`categoryid`=b.`pid`

结果如下:

自联接的操作实际上就是两张表都是自己,只不过,这两张表有一种特殊的关系,使得自己可以拆分成两个表

 

标签:JOIN,gradename,查询,联表,MySql,join,id,SELECT
From: https://www.cnblogs.com/5ran2yl/p/16871490.html

相关文章

  • 【MySQL】测试题01
    ✅作者简介:热爱国学的Java后端开发者,修心和技术同步精进。......
  • 排序查询
    引入:select*fromemployee; 语法:select查询列表;form表[where筛选条件]orderby 排序顺序 [asc desc]特点......
  • MySQL
    1.简介MySQL是一个关系型数据库管理系统,由瑞典MySQLAB公司开发,属于Oracle旗下产品。数据库是按照数据结构来组织、存储和管理数据的仓库。是一个长期存储在计算机内......
  • 切记:永远不要在MySQL中使用UTF-8
    MySQL使用UTF-8issue 问题描述:最近我遇到了一个bug,我试着通过Rails在以“utf8”编码的MariaDB中保存一个UTF-8字符串,然后出现了一个离奇的错误:Incorrect value:‘\xF0\x......
  • docker 快速部署 elasticseach kafa mysql redis pgsql etcd
    version:"3"services:pgsql:container_name:pgsqlimage:postgres:latestprivileged:trueenvironment:POSTGRES_PASSWORD:password......
  • Windows系统 占用端口的程序查询
    Windows系统调出命令窗口输入命令:netstat-ano列出所有端口的情况查看被占用端口对应的PID,输入命令:netstat-aon|findstr“8082”,回车,记下最后一位数字,即PID,加入这里......
  • 数据库编程——Oracle MySQL SQL
    在学习数据库编程总结了笔记,并分享出来。09-数据库编程day03(oraclemysqlsql)  一、学习目标1.oracle创建和管理表2.oracle的视图,索引,同义词,序列(了解作用和创建方式......
  • mysql 5.7安装及使用binlog日志恢复数据库
    目录mysql5.7安装及使用binlog日志恢复数据库binlog日志介绍安装mysql5.7开启Binlog日志查看binlog日志状态和内容通过Binlog恢复数据清理MySQL的binlog日志自动删除手动......
  • Python 生成MySQL数据库的表结构到word文档
    原理:读取系统表的数据,调用python-docx库生成word文档。importpymysqlfromdocximportDocumentfromdocx.sharedimportInchesdocument=Document()document.a......
  • mysql根据json字段内容作为查询条件(包括json数组)检索数据
    最近用到了mysql5.7的json字段的检索查询,发现挺好用的,记录一下笔记我们有一个日志表,里面的data字段是保存不同对象的json数据,遇到想根据里面的json的字段内容作为条件查询......