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!
相关推荐
你真的会写一手好SQL吗?你真的深入了解数据库吗?你真的对MYSQL很理解吗?来自一线大厂资深数据库开发工程师的分享,纯粹干货,值得拥有。
在MySQL中,主要有四种类型的联接:内联接(INNER JOIN)、左联接(LEFT JOIN)、右联接(RIGHT JOIN)和全联接(FULL JOIN)。这些联接方式依据它们如何处理不同表之间的匹配记录而有所不同。 1. **内联接(INNER ...
完整报错信息: ...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 之 inner join、left join、right join 详解 Mysql 中的连接查询是指从多个表中检索数据,并将它们组合成一个结果集。inner join、left join 和 right join 是 Mysql 中三种最常用的连接查询方式。 inner ...
MySQL中的LEFT JOIN是一种关联多个表的方法,用于返回左表的所有记录以及右表匹配的记录。在某些场景下,我们可能需要连接多个表来获取全面的数据信息。本篇文章将深入探讨MySQL多个LEFT JOIN连接查询的用法,通过...
关于 “A LEFT JOIN B ON 条件表达式” 的一点提醒 ON 条件(“A LEFT JOIN B ON 条件表达式”中的ON)用来决定如何从 B 表中检索数据行。 如果 B 表中没有任何一行数据匹配 ON 的条件,将会额外生成一行所有列为 ...
MySQL联合查询:使用JOIN连接多个表的指南
mysql数据库报ERROR 1045 (28000): Access denied for user ‘ODBC’@’localhost’ (using password: NO) 看到网上说要配置my.ini 我的是win10系统,用的是mysql-5.7.18-winx64mysql 文件里没有my.ini,在网上看到...
本篇文章将深入探讨四种基本的JOIN类型:LEFT JOIN(左连接)、RIGHT JOIN(右连接)、INNER JOIN(内连接)以及OUTER JOIN(外连接)。我们将详细解释这些概念,它们的工作原理以及在实际数据库操作中的应用。 1. ...
首先,“--skip-grant-tables”是MySQL中的一个命令行选项,用于启动MySQL服务器时告诉服务器跳过权限检查,允许无需密码即可登录MySQL。这种方式常用于忘记root密码或是需要紧急修复数据库权限问题时。 然而,在...
在SQL查询中,LEFT JOIN操作用于连接两个或更多表,并保留左表(即第一个表)的所有记录,即使右表没有匹配的记录。当右表的某些字段在LEFT JOIN后为NULL时,我们可以利用函数来将这些NULL值替换为特定值,如0或其他...
MySQL的LEFT JOIN是一种关联查询操作,它用于合并两个或多个表的数据,并且返回所有左表(也就是在JOIN语句中位于LEFT关键字之后的表)的记录,即使在右表中没有匹配的记录。这个概念是数据库关系查询中的关键部分,...
本文档详细介绍了 MySQL 中的 JOIN 语法,包括 INNER JOIN、LEFT JOIN、RIGHT JOIN、FULL JOIN 等,并提供了实际的实例来说明 JOIN 的用法。 首先,MySQL 的 JOIN 语法用于根据两个或多个表中的字段之间的关系,从...
首先是不知道怎么忽然mysql用命令行,workbench都登录不了,都提示’Access denied for user ‘root’@’localhost’。 数据库卸载重装了几次都不行。好像感觉数据清理不干净。解决的过程遇到的坑,这里记录分享下。...
MySQL中的`NOT IN`, `LEFT JOIN`, `IS NULL`, 和 `NOT EXISTS` 是四种不同的SQL查询方式,它们在特定情况下可以实现相似的功能,但实际执行效率可能会有很大差异。本文主要探讨这四种方法在处理大数据量时的性能表现...
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 的高效运用能显著提升查询速度。以下将详细探讨这些JOIN类型以及相关的优化策略。 JOIN原理: JOIN操作实际上是...