`
DavyJones2010
  • 浏览: 154912 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

MySQL: Left Join for More Than Two tables

阅读更多

1. Tables used

# 1. goods
select * from goods;
+----------+--------+------------+----------+
| goods_id | cat_id | goods_name | owner_id |
+----------+--------+------------+----------+
|        1 |      1 | CDMA Phone |        1 |
|        2 |      1 | GSM Phone  |        1 |
|        3 |      1 | 3G Phone   |        2 |
|        4 |      3 | TP Phone   |        1 |
+----------+--------+------------+----------+

# 2. cat
select * from cat;
+--------+---------------+
| cat_id | cat_name      |
+--------+---------------+
|      1 | Mobile Phone  |
|      2 | Settled Phone |
+--------+---------------+

# 3. owner
select * from owner;
+----------+------------+
| owner_id | owner_name |
+----------+------------+
|        1 | Davy       |
|        2 | Caly       |
|        3 | Jack       |
|        4 | Rose       |
+----------+------------+

 

2. How to join those three tables together?

 

#Possible attempt 1
select temp.*, owner.* from (select goods.*, cat.* from goods left join cat on goods.cat_id = cat.cat_id) as temp left join owner on temp.owner_id = owner.owner_id;
ERROR 1060 : Duplicate column name 'cat_id'

#Possible attempt 2
select temp.*, owner.* from (select goods.cat_id, goods.goods_name, goods.goods_id, cat.cat_name from goods left join cat on goods.cat_id = cat.cat_id) as temp left join owner on temp.owner_id = owner.owner_id;
ERROR 1054 : Unknown column 'temp.owner_id' in 'on clause'

#Possible attempt 3
select goods.cat_id, cat.cat_name, goods.goods_name, owner.owner_id, owner.owner_name from goods left join cat on goods.cat_id = cat.cat_id left join owner on goods.owner_id = owner.owner_id;
+--------+--------------+------------+----------+------------+
| cat_id | cat_name     | goods_name | owner_id | owner_name |
+--------+--------------+------------+----------+------------+
|      1 | Mobile Phone | CDMA Phone |        1 | Davy       |
|      1 | Mobile Phone | GSM Phone  |        1 | Davy       |
|      1 | Mobile Phone | 3G Phone   |        2 | Caly       |
|      3 | NULL         | TP Phone   |        1 | Davy       |
+--------+--------------+------------+----------+------------+

#Bingo!
分享到:
评论

相关推荐

    MySQL:Left Join 避坑指南.docx

    你真的会写一手好SQL吗?你真的深入了解数据库吗?你真的对MYSQL很理解吗?来自一线大厂资深数据库开发工程师的分享,纯粹干货,值得拥有。

    MySQL: Data Join

    在MySQL中,主要有四种类型的联接:内联接(INNER JOIN)、左联接(LEFT JOIN)、右联接(RIGHT JOIN)和全联接(FULL JOIN)。这些联接方式依据它们如何处理不同表之间的匹配记录而有所不同。 1. **内联接(INNER ...

    连腾讯云上的docker上的mysql报错ERROR 1045 (28000): Access denied for user ‘root’@’localhost’ (using password:

    完整报错信息: ...2.进入mysqlId.cnf文件中在[mysqld]下添加skip-grant-tables vim conf/mysqId.cnf 3.进入mysql容器 docker exec -it mysql.5.7 /bin/bash 4.使用mysql -u root -p命令进入mys

    Mysql之innerjoin,leftjoin,rightjoin详解.pdf

    Mysql 之 inner join、left join、right join 详解 Mysql 中的连接查询是指从多个表中检索数据,并将它们组合成一个结果集。inner join、left join 和 right join 是 Mysql 中三种最常用的连接查询方式。 inner ...

    深入理解mysql之left join 使用详解

    关于 “A LEFT JOIN B ON 条件表达式” 的一点提醒 ON 条件(“A LEFT JOIN B ON 条件表达式”中的ON)用来决定如何从 B 表中检索数据行。 如果 B 表中没有任何一行数据匹配 ON 的条件,将会额外生成一行所有列为 ...

    mysql数据库mysql: [ERROR] unknown option –skip-grant-tables

    mysql数据库报ERROR 1045 (28000): Access denied for user ‘ODBC’@’localhost’ (using password: NO) 看到网上说要配置my.ini 我的是win10系统,用的是mysql-5.7.18-winx64mysql 文件里没有my.ini,在网上看到...

    关于sql的left join,right join,inner join,outerjoin

    本篇文章将深入探讨四种基本的JOIN类型:LEFT JOIN(左连接)、RIGHT JOIN(右连接)、INNER JOIN(内连接)以及OUTER JOIN(外连接)。我们将详细解释这些概念,它们的工作原理以及在实际数据库操作中的应用。 1. ...

    mysql数据库mysql: [ERROR] unknown option '--skip-grant-tables'

    首先,“--skip-grant-tables”是MySQL中的一个命令行选项,用于启动MySQL服务器时告诉服务器跳过权限检查,允许无需密码即可登录MySQL。这种方式常用于忘记root密码或是需要紧急修复数据库权限问题时。 然而,在...

    MySQL Left JOIN时指定NULL列返回特定值详解

    在SQL查询中,LEFT JOIN操作用于连接两个或更多表,并保留左表(即第一个表)的所有记录,即使右表没有匹配的记录。当右表的某些字段在LEFT JOIN后为NULL时,我们可以利用函数来将这些NULL值替换为特定值,如0或其他...

    mysql Join使用以及优化

    MySQL数据库中Join操作的使用及优化是一项重要的技能,它涉及到数据库中表与表之间的关联查询。在执行Join操作时,数据库管理系统需要按照某种算法将多个表中的数据记录联合起来,并返回查询结果。Join操作的主要...

    MySQL的LEFT JOIN表连接的进阶学习教程

    MySQL的LEFT JOIN是一种关联查询操作,它用于合并两个或多个表的数据,并且返回所有左表(也就是在JOIN语句中位于LEFT关键字之后的表)的记录,即使在右表中没有匹配的记录。这个概念是数据库关系查询中的关键部分,...

    MySQL JOIN 语法说明与 INNER JOIN 语法用法实例.docx

    本文档详细介绍了 MySQL 中的 JOIN 语法,包括 INNER JOIN、LEFT JOIN、RIGHT JOIN、FULL JOIN 等,并提供了实际的实例来说明 JOIN 的用法。 首先,MySQL 的 JOIN 语法用于根据两个或多个表中的字段之间的关系,从...

    解决mysql登录错误:’Access denied for user ‘root’@’localhost’

    首先是不知道怎么忽然mysql用命令行,workbench都登录不了,都提示’Access denied for user ‘root’@’localhost’。 数据库卸载重装了几次都不行。好像感觉数据清理不干净。解决的过程遇到的坑,这里记录分享下。...

    mysql not in、left join、IS NULL、NOT EXISTS 效率问题记录

    MySQL中的`NOT IN`, `LEFT JOIN`, `IS NULL`, 和 `NOT EXISTS` 是四种不同的SQL查询方式,它们在特定情况下可以实现相似的功能,但实际执行效率可能会有很大差异。本文主要探讨这四种方法在处理大数据量时的性能表现...

    MySQL表LEFT JOIN左连接与RIGHT JOIN右连接的实例教程

    MySQL LEFT JOIN 语法 SQL(MySQL) LEFT JOIN 会取得左表(table1)全部记录,即使右表(table2)并无对应匹配记录。LEFT JOIN 基本语法如下: ... FROM table1 LEFT JOIN table2 ON condition ... MySQL LEFT ...

    SQL语句优化之JOIN和LEFT JOIN 和 RIGHT JOIN语句的优化

    SQL语句优化对于大型数据库系统至关重要,特别是在涉及多表查询时,JOIN、LEFT JOIN 和 RIGHT JOIN 的高效运用能显著提升查询速度。以下将详细探讨这些JOIN类型以及相关的优化策略。 JOIN原理: JOIN操作实际上是...

    Beginning PHP and MySQL: From Novice to Professional, 5th Edition

    Kromann draws upon more than 20 years of experience working with these technologies to pack this book with practical examples and insight into the real-world challenges faced by developers....

Global site tag (gtag.js) - Google Analytics