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: 2018-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

https://blog.csdn.net/chentaocba/article/details/7697825

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

http://www.cnblogs.com/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配置和管理:http://www.2cto.com/database/201306/222510.html mysql分表,分区的区别和联系:http://my.oschina ...

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

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

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

  1. SQL数据库语言基础之SqlServer多表连接查询与INNER JOIN内连接查询

    文章目录 一.简单连接查询 二.多表连接查询 三.INNER JOIN 内连接查询 一.简单连接查询 1.直接连接:无连接规则连接两表,得到的是两个表的笛卡尔积. 连接后的行数=表1行数*表2行数 连 ...

  2. mysql left join 三表查询_MySql的join(连接)查询 (三表 left join 写法)

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

  3. mysql常用基础操作语法(八)~~多表查询合并结果和内连接查询【命令行模式】...

    1.使用union和union all合并两个查询结果:select 字段名 from tablename1 union select 字段名 from tablename2: 注意这个操作必须保证两 ...

  4. 数据库系统原理与应用教程(047)—— MySQL 查询(九):连接查询

    数据库系统原理与应用教程(047)-- MySQL 查询(九):连接查询 目录 数据库系统原理与应用教程(047)-- MySQL 查询(九):连接查询 一.连接查询的语法格式 二.两张表的连接 1. ...

  5. MySQL从删库到跑路(7):连接查询,用联系的观点看女神与渣男

     "有为,能陪我说说话么?"  望着梨花带雨的女神,一时间李有为陷入了恍惚之中,尽管心里已经千万次告诫自己要远离面前的女人,可是当她真的出现在面前时,李有为的大脑早已一片空白.   ...

  6. mysql view 能和表关联吗_MySQL数分:复杂查询

    此次分享的内容是MySQL的复杂查询. 同样,我们依旧先进入提问环节:如果A九需要经常性的对学生性别对应人数进行汇总,有没有什么便捷的方法? 答案是有的.我们可以使用创建一个"按性别汇总&q ...

  7. mysql数据库做关联查询_mysql 数据库join关联查询using(xxx)的作用

    user表: id | name --------- 1 | libk 2 | zyfon 3 | daodao user_action表: user_id | action ------------ ...

  8. mysql联表查球队比分_mysql – 什么可以导致连接比分为两个查询慢?

    我正在从多个表执行JOIN以执行分面搜索.当避免JOIN并将查询分成两个不同的时候我注意到了一个很大的性能提升,所以我假设我的JOIN没有优化. 结构: -- tags userId | tagId ...

  9. mysql 索引查询_mysql索引的建立和查询语句优化

    首先表内容展示: # 300W条的模拟数据 # 并且没有建立任何索引 不建立索引的查询时间: 以id查询的(4秒多): 以email查询的(4秒多): 建立主键索引后: alter table s1 ...

  10. mysql 慢查询_mysql如何捕捉慢日志查询

    慢日志查询日志 查询超过变量 long_query_time指定时间值的为慢查询,但是查询获取锁(包括锁等待)的时间不计入查询时间内,mysql 记录慢查询日志是在查询执行完毕且已经完全释放锁之后才记 ...

最新文章

  1. [Leetcode] Max Area of Island 最大岛屿面积
  2. Weblogic基本概念整理
  3. C语言orders order订单的算法(附完整源码)
  4. java中大数字表示什么_JAVA中大数字的的处理:BigInteger和BigDecimal
  5. 学习记录012-NFS
  6. k近邻算法matlab实现_k近邻算法
  7. linux目录文件变化,Linux下监测目录或文件的变化---inotify
  8. Hadoop 之 Distcp官网介绍和注意事项
  9. CSS 标签左右分布的多种方法
  10. 大数据+人工智能时代,电子招投标更符合未来趋势
  11. 《遥感原理与应用》总结—遥感传感器及成像原理
  12. 幼儿园计算机认识键盘上课教案,认识键盘教案
  13. 应用笔记3816 ds 1302 估算涓流充电实时时钟的超级电容备份时间
  14. Python之路【第八篇】:面向对象的程序设计
  15. 百度绿萝算法更新 众多网站摊上事了
  16. android隐藏虚拟按键的几种方式
  17. html设计动画小黄人,【二次元的CSS】—— 用 DIV + LESS 做一个小黄人构造器
  18. win10清理_别人都说win10不需要装电脑管家,那电脑产生的垃圾该怎么清理呢
  19. 如何快速创建活码二维码(动态二维码)
  20. 保监会就交强险费率浮动征询专家意见 凸显3焦点

热门文章

  1. java软尾山地车评测_如何挑选适合自己的软尾山地自行车
  2. 2020/2/24Axure 中继器使用心得
  3. mysql analyze_技术分享 | MySQL EXPLAIN ANALYZE
  4. 网络监控与安全 | 主要网络流量处理技术
  5. iPhone中BigBoss源添加以及SBSettings安装。
  6. 分叉币的发展史及价值|ETH、BCH、BSV 2020-03-08
  7. 《我的世界》Minecraft私服搭建100%成功
  8. 巴菲特十大量化选股经
  9. visio2013报临时目录下某些文件找不到(实际有)
  10. 清音驱腐启鸿蒙,中华成语千句文解释.doc