700字范文,内容丰富有趣,生活中的好帮手!
700字范文 > mysql 10张表左关联查询_mysql left join 左连接查询关联n多张表

mysql 10张表左关联查询_mysql left join 左连接查询关联n多张表

时间:2021-07-23 16:48:07

相关推荐

mysql 10张表左关联查询_mysql left join 左连接查询关联n多张表

left join 左连接即以左表为基准,显示坐标所有的行,右表与左表关联的数据会显示,不关联的则不显示。关键字为left join on。

**基本用法如下:

select table a left join table b on a.id = b.ta_id**

注意:

其中on后面关联的字段应该是同一字段(两表关联的外键)

由于以左表为基准,左表一条记录如果对应右表多条记录,那查出的数据中右表的数据也只显示一条,如果要都显示,可以用group_contact()将字段用逗号隔开显示在一条记录上。所以右表不管有几张,如果和左表都是一对一关系,则没问题,存在一对多关系时,需要一定的处理。

1、内连接:将两个表中存在连结关系的字段符合连接条件的记录形成记录集

SELECT

A. NAME,

B. NAME

FROM

A

INNER JOIN B ON A.id = B.id

SELECT

A. NAME,

B. NAME

FROM

A,

B

WHERE

A.id = B.id

结果是一样的(内连接的inner关键字可省略);

2、外连接:分为左外连接和右外连接

左连接A、B表结果包括A的全部记录和符合条件的B的记录。

右联结A、B表的结果和左联结B、A的结果是一样的,也就是说:

SELECT

A. NAME,

B. NAME

FROM

A

LEFT JOIN B ON A.id = B.id

SELECT

A. NAME,

B. NAME

FROM

B

RIGHT JOIN A ON B.id - A.id

执行后的结果是一样的。

3、全联结

4、无联结

5、三表联结查询

SELECT

username,

psw,

gname,

tel

FROM

(

t1

LEFT JOIN t2 ON t1.t1_id = t2.t1_id

)

LEFT JOIN t3 ON t1.t1_id = t3.t1_id

6、终极的三表联结查询

items:商品表,item_visit_stats:商品访问表,item_trade_stats:商品销售表

/*

Source Server : localhost

Source Server Version : 50505

Source Host : localhost:3306

Source Database : test

Target Server Type : MYSQL

Target Server Version : 50505

File Encoding : 65001

Date: -09-14 19:00:46

*/

SET FOREIGN_KEY_CHECKS=0;

-- ----------------------------

-- Table structure for items

-- ----------------------------

DROP TABLE IF EXISTS `items`;

CREATE TABLE `items` (

`id` bigint(20) unsigned NOT NULL AUTO_INCREMENT,

`title` varchar(255) DEFAULT '',

`price` varchar(255) DEFAULT '',

`nick` varchar(255) DEFAULT '',

PRIMARY KEY (`id`)

) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='商品表';

-- ----------------------------

-- Table structure for item_trade_stats

-- ----------------------------

DROP TABLE IF EXISTS `item_trade_stats`;

CREATE TABLE `item_trade_stats` (

`id` bigint(20) unsigned NOT NULL AUTO_INCREMENT,

`buyer_num` int(11) unsigned DEFAULT '',

`item_num` int(11) unsigned DEFAULT '',

`seller_nick` varchar(255) DEFAULT '',

`business_day` datetime DEFAULT CURRENT_TIMESTAMP,

PRIMARY KEY (`id`)

) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='商品销售表';

-- ----------------------------

-- Table structure for item_visit_stats

-- ----------------------------

DROP TABLE IF EXISTS `item_visit_stats`;

CREATE TABLE `item_visit_stats` (

`id` bigint(20) unsigned NOT NULL AUTO_INCREMENT,

`user_visits` varchar(255) NOT NULL,

`business_day` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP,

PRIMARY KEY (`id`)

) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='商品访问表';

SELECT

i.id,

i.title,

SUM(ivs.user_visits) AS uv,

its.item_num * i.price AS turnover

FROM

(

items AS i

RIGHT JOIN item_visit_stats AS ivs ON i.id = ivs.id

)

LEFT JOIN (

SELECT

id,

SUM(item_num) AS item_num

FROM

item_trade_stats

WHERE

seller_nick = "XXXX"

GROUP BY

id

) AS its ON its.id = ivs.id

WHERE

i.nick = "XXXX"

GROUP BY

i.id

ORDER BY

uv DESC

/chentaocba/article/details/7697825

写的时候从外层往里写,一层一层left join,才不容易出错。

/amyStart/p/5965472.html

掌握MySQL连接查询到底什么是驱动表

准备我们需要的表结构和数据 两张表 studnet(学生)表和score(成绩)表, 创建表的SQL语句如下 CREATE TABLE `student` ( `id` int(11) NOT NUL ...

MySQL (五)--连接查询简介、 交叉连接、 内连接、外连接、自然连接、温馨小提示

1 连接查询简介 将多张表(可以大于2)进行记录的连接(按照某个指定的条件进行数据拼接). 最终结果:记录数可能会有变化,字段书一定会增加(至少两张表的合并). 连接查询:join,使用方式:左表 j ...

SQL左连接查询 left join ... on

左连接查询 保留左边主表的所有行(即使在右表没有匹配的行),右表输出满足on条件的行,不满足的输出null 示例:组合两个表 - 力扣 表1: Person +--------------+- ...

深入学习之mysql(五)连接查询

深入学习Mysql(五)连接查询 1.准备数据库: CREATE DATABASE IF NOT EXISTS `db_book2` DEFAULT CHARACTER SET UTF8; USE ` ...

mysql连接查询:3个数据表操作研究

首先,新建数据表aaa.bbb以及他们相关联的数据表avb:字段名如下图 填充点数据,如下: 上面设计表的时候,故意在两个表中有相同字段con,如果不做处理的话,在php程序中,看看什么情况?得到的结 ...

mysql分区功能(三个文件储存一张表)(分区作用)(分区方式)

mysql分区功能(三个文件储存一张表)(分区作用)(分区方式) 一.总结 1.mysql数据表的存储方式(三个文件储存一张表): 一张表主要对应着三个文件,一个是frm存放表结构的,一个是myd存放 ...

mysql/mariadb学习记录——连接查询(JOIN)

//本文使用的数据表格//persons表中id_p为主键//orders表中id_o为主键,id_p为外键参考persons表中的id_p mysql> select * from perso ...

MySql的join(连接)查询 (三表 left join 写法)

1.内连接:将两个表中存在连结关系的字段符合连接条件的记录形成记录集 Select A.name,B.name from A inner join B on A.id=B.id和 Select A.n ...

mysql左连接查询结果不准确

现有四张表 表(1)res_resource_catalog 表(2)res_catalog_classify 表(3)res_resource_classify 表(4)res_resource_m ...

随机推荐

c# 多线程与异步调用

异步操作的本质 在方法调用前为异步方法指定一个回调函数,方法调用后被线程池中的一个线程接管,执行该方法.主线程立即返回,继续执行其他工作或响应用户请求.如果异步方法执行完 毕,回调函数被自动执行,以处 ...

PHP代码审计】 那些年我们一起挖掘SQL注入 - 1.什么都没过滤的入门情况

0x01 背景 首先恭喜Seay法师的力作,读了两天后深有感触.想了想自己也做审计有2年了,决定写个PHP代码审计实例教程的系列,希望能够帮助到新人更 ...

urlopen()&urlretrieve()

1.urlopen()方法 urllib.request.urlopen(url[,data[,proxies]]) 创建一个表示远程url的类文件对象,然后像本地文件一样的操作这个类文件对象来获取远 ...

C# 中如何判断字符串的相似度

基于F23.StringSimilarity.dll 组件.Github 上可以搜索到该组件. 核心方法: var l = new Levenshtein(); double tempValue ...

idea出现找不到实体类

今天经理遇到一个很奇怪的问题: 在使用idea时,就是包真实存在,但是包中的实体类却无法智能提示,也无法导入成功: 我推荐的解决办法是重新导入,但是没有用,经理在网上找了很多解决方式,依然无效: 最后 ...

Vue2.x源码学习笔记-Vue静态方法和静态属性整理

Vue静态方法和静态属性,其实直接在浏览器中可以查看到的,如下 圈起来的是其静态属性,但是有的属性对象中的属性的值又是函数.未圈起来的则是函数. 其实它来自如下各个目录下的js文件 // src/co ...

nexys4ddr数码管动态扫描Verilog例程

题目:实现数码管动态扫描功能,将十六个开关的值以十六进制的方式在4个数码管上同时显示出来. `timescale 1ns / 1ps module top( clk, sw, seg, an ); / ...

不一样的go语言-构建系统与构件系统

前言 代码的最后一步是构建成计算机可识别的二进制数据,然后才得以在计算机上运行.如果你曾经写过有点规模(至少数十个以上独立的源文件,且需要依赖第三方包)C语言项目,必定对C语言项目的构建过程印象深 ...

MySql 分区 分库 分表

ubuntu下MySQL配置和管理:/database/06/222510.html mysql分表,分区的区别和联系:http://my.oschina ...

C#对两种类型动态库的使用

一.托管:如果一个动态库本身是基于.NET的,那么可以直接在工程引用里右键添加引用,如微软的COM技术[因为你依托的是微软的框架,所以需要regsvr32注册] 二.非托管:如果不是基于.NEt的,那 ...

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。