- 浏览: 1558177 次
- 性别:
- 来自: 上海
-
文章分类
- 全部博客 (532)
- 软件设计师 (7)
- PSP (5)
- NET MD (9)
- Hibernate (8)
- DIY (51)
- Work (43)
- GAME (24)
- 未分类 (44)
- iPod (6)
- MySQL (39)
- JSP (7)
- 日语能力考试 (36)
- 小说 (4)
- 豆包网 (23)
- 家用电脑 (7)
- DB2 (36)
- C/C++ (18)
- baby (9)
- Linux (13)
- thinkpad (23)
- OA (1)
- UML (6)
- oracle (24)
- 系统集成 (27)
- 脑梗塞 (6)
- 车 (8)
- MainFrame (8)
- Windows 7 (13)
- 手机 (8)
- git (12)
- AHK (2)
- COBOL (2)
- Java (9)
最新评论
-
安静听歌:
... ...
UUID做主键,好还是不好?这是个问题。 -
lehehe:
http://www.haoservice.com/docs/ ...
天气预报 -
lehehe:
[url http://www.haoservice.com/ ...
天气预报 -
liubang201010:
监控TUXEDO 的软件推荐用这个,专业,权威.并能提供报警和 ...
(转载)Tuxedo中间件简介 -
tinkame:
Next[j] =-1 当j=0时;=Max{k|0<k ...
KMP字符串模式匹配详解
MySQL中的各种JOIN(CROSS JOIN, INNER JOIN, LEFT [OUTER] JOIN)
php青蛙 /hainuo 发表于2008-01-14, 17:12
MySQL中的各种JOIN
1. 笛卡尔积(交叉连接) 在MySQL中可以为CROSS JOIN或者省略CROSS即JOIN,或者使用',' 如 SELECT * FROM table1 CROSS JOIN table2 SELECT * FROM table1 JOIN table2 SELECT * FROM table1,table2 由于其返回的结果为被连接的两个数据表的乘积,因此当有WHERE, ON或USING条件的时候一般不建议使用,因为当数据表项目太多的时候,会非常慢。 一般使用LEFT [OUTER] JOIN或者RIGHT [OUTER] JOIN 2. 内连接INNER JOIN 在MySQL中把INNER JOIN叫做等值连接,即需要指定等值连接条件 在MySQL中CROSS和INNER JOIN被划分在一起,不明白。 参看MySQL帮助手册 http://dev.mysql.com/doc/refman/5.0/en/join.html join_table: table_reference [INNER | CROSS] JOIN table_factor [join_condition] 3. MySQL中的外连接,分为左外连接和右连接, 即除了返回符合连接条件的结果之外,还要返回左表(左连接)或者右表(右连接)中不符合连接条件的结果,相对应的使用NULL对应。 a. LEFT [OUTER] JOIN SELECT column_name FROM table1 LEFT [OUTER] JOIN table2 ON table1.column=table2.column 除了返回符合连接条件的结果之外,还需要显示左表中不符合连接条件的数据列,相对应使用NULL对应 b. RIGHT [OUTER] JOIN SELECT column_name FROM table1 RIGHT [OUTER] JOIN table2 ON table1.column=table2.column RIGHT与LEFT JOIN相似不同的仅仅是除了显示符合连接条件的结果之外,还需要显示右表中不符合连接条件的数据列,相应使用NULL对应 -------------------------------------------- 添加显示条件WHERE, ON, USING 1. WHERE子句 2. ON 3. USING子句,如果连接的两个表连接条件的两个列具有相同的名字的话可以使用USING 例如 SELECT <column_name> FROM <table1> LEFT JOIN <table2> USING (<column_name>) 连接多余两个表的情况 举例: mysql> SELECT artists.Artist, cds.title, genres.genre -> FROM cds -> LEFT JOIN genres -> ON cds.genreID = genres.genreID -> LEFT JOIN artists -> ON cds.artistID = artists.artistID; 或者 mysql> SELECT artists.Artist, cds.title, genres.genre -> FROM cds -> LEFT JOIN genres -> ON cds.genreID = genres.genreID -> LEFT JOIN artists -> ON cds.artistID = artists.artistID -> WHERE (genres.genre = 'Pop'); -------------------------------------------- 另外需要注意的地方 在MySQL中涉及到多表查询的时候,需要根据查询的情况,想好使用哪种连接方式效率更高。 1. 交叉连接(笛卡尔积)或者内连接 [INNER | CROSS] JOIN 2. 左外连接LEFT [OUTER] JOIN或者右外连接RIGHT [OUTER] JOIN 注意指定连接条件WHERE, ON,USING. -------------------------------------------- 看懂MySQL手册定义的MySQL各种JOIN的用法: //看懂如下的定义方式
MySQL手册中提到的JOIN需要注意的地方: 1.In MySQL, CROSS JOIN is a syntactic equivalent to INNER JOIN (they can replace each other). In standard SQL, they are not equivalent. INNER JOIN is used with an ON clause, CROSS JOIN is used otherwise.手册中提到 标准SQL中CROSS JOIN交叉连接(笛卡尔积)和内连接INNER JOIN不同,但是MySQL中两者是相同的,即有[CROSS | INNER] JOIN,两者可以互相替代,而且可以只使用JOIN 2. A table reference can be aliased using or tbl_name alias_name :
SELECT t1.name, t2.salary参考资料 http://www.w3schools.com/sql/sql_join.asp http://www.keithjbrown.co.uk/vworks/mysql/mysql_p5.php http://dev.mysql.com/doc/refman/5.0/en/join.html |
![]() |
![]() |
Trackback: http://tb.blog.csdn.net/TrackBack.aspx?PostId=1910062
发表评论
-
MySQL配置文件my.cnf 例子最详细翻译
2009-07-20 11:58 1783http://www.blogjava.net/hunte ... -
MySQL :: @@Rowcount in MySQL
2009-03-02 15:39 2291@@Rowcount in MySQL? Posted ... -
MYSQL中删除重复记录的方法
2009-02-26 12:23 0MYSQL中删除重复记录的方法 2008 ... -
使用 MYSQLBINLOG 来恢复数据。
2009-02-26 12:21 0使用 MYSQLBINLOG 来恢复数据。 20 ... -
13.2.3. InnoDB Startup Options and System Variable
2009-02-20 13:37 1283http://dev.my ... -
mysql innodb 配置详解
2009-02-20 11:01 3612加为好友发送私信在线聊天 -
20.3.9 关于死锁 深入浅出MySQL——数据库开发、优化与管理维护
2009-02-20 10:50 3186深入浅出MySQL——数据库开发、优化与管理维护 回 ... -
mysql的临时表不支持自连接
2009-02-18 13:32 2388TEMPORARY TABLE ProblemsThe fol ... -
windows 下安装两个MySQL收藏
2009-02-03 16:28 2420由于两个MySQL进程需要不同的配置文件,以下所有操作均是在W ... -
1.4.1. What's New in MySQL 5.1
2009-02-03 16:25 12061.4.1. What's New in My ... -
查看mysql版本的四种方法
2009-02-02 10:57 10081:在终端下:mysql -V。 以下 ... -
Server SQL Modes
2009-02-01 11:06 14905.1.7. Server SQL Modes ... -
[转]SQL Server 2000执行计划成本(5/5)
2009-01-09 15:26 1222[转]SQL Server 2000执行计划成本(5/5) ... -
SQL Server 2000执行计划成本(4/5)
2009-01-09 15:25 1118[转]SQL Server 2000执行计划成本(4/5) ... -
[转]SQL Server 2000执行计划成本(3/5)
2009-01-09 15:23 1560[转]SQL Server 2000执行计划成本(3/5) ... -
SQL Server 2000执行计划成本(1/5)
2009-01-09 14:52 1669[转]SQL Server 2000执行计划成本(1/5) ... -
浅谈MySQL数据库优化
2009-01-09 14:46 1377浅谈MySQL数据库优化 [收藏此页] [打印] ... -
sql server支持create table as ...建表么
2009-01-09 11:52 9085sql server支持create table as .. ... -
SQL Server如何识别自动创建的索引
2009-01-08 15:57 1331SQL Server如何识别自动创建的索引 http://w ... -
请问在一个查询里表连接的顺序对查询的性能是否有影响
2009-01-08 12:02 1286请问在一个查询里表连接的顺序对查询的性能是否有影响? 楼主w ...
相关推荐
inner join、left join 和 right join 是 Mysql 中三种最常用的连接查询方式。 inner join inner join 又称等值连接,是指从两个表中选择公共列的记录。只有当两个表中的列值相等时,才会返回结果集。例如: ...
在SQL查询中,联合查询是将两个或多个表格的数据结合在一起的一种方法,主要涉及三种类型的联合:INNER JOIN、OUTER JOIN(包括LEFT JOIN、RIGHT JOIN和FULL JOIN)以及CROSS JOIN。理解这些概念对于数据库开发人员...
在MySQL中,主要的Join方法包括INNER JOIN、LEFT JOIN、RIGHT JOIN、FULL JOIN、SELF JOIN以及CROSS JOIN等。 INNER JOIN(内连接):是所有Join中最常见的类型。使用INNER JOIN后,只有两个表中能够相互匹配的记录...
3. **全外联结(FULL OUTER JOIN)**:MySQL不直接支持全外联结,但可以通过组合LEFT JOIN和RIGHT JOIN来实现相同的效果,展示左表和右表中所有匹配和不匹配的记录。 ```sql SELECT * FROM java LEFT JOIN mysql...
在MySQL中,如果没有指定ON条件,INNER JOIN和CROSS JOIN的结果相同,都是笛卡尔积。 字段字符集编码对性能的影响不容忽视。不同的字符集可能会导致不同的存储需求和处理速度。例如,如果一个JOIN操作涉及到两个...
在这个学习资源中,我们将学习七种基本的Join查询类型:inner join、left join、right join、full join、left outer join、right outer join和cross join。 3. 创建表: 在学习Join查询之前,我们需要了解如何创建...
在MySQL中,INNER JOIN和CROSS JOIN是等价的。例如: ```sql SELECT * FROM table1 INNER JOIN table2 ON table1.key = table2.key; ``` 这里,`key`是连接条件,只有当table1和table2的`key`值相等时,记录才会被选...
- 外连接分为左外连接(Left Outer Join)、右外连接(Right Outer Join)和全外连接(Full Outer Join)。 - **左外连接**(Left Join)保留左表(在JOIN语句中位于前面的表)的所有行,即使在右表中没有匹配的行...
左外连接(LEFT JOIN 或 LEFT OUTER JOIN):左外连接会返回左表(FROM子句中指定的表)的所有行,并且对于右表中匹配的行,返回相应的信息。如果右表中没有匹配行,则结果集中相关字段值为NULL。 右外连接(RIGHT ...
这些知识点主要涉及几种不同的连接方式,包括内连接(INNER JOIN)、左外连接(LEFT JOIN)、右外连接(RIGHT JOIN)、全外连接(FULL OUTER JOIN)、以及笛卡尔积(CROSS JOIN)。通过对这些连接类型的理解和应用,可以实现在...
4. **选择正确的JOIN类型**:根据需求,选择最合适的JOIN类型,有时INNER JOIN比OUTER JOIN更快。 5. **避免使用SELECT ***:明确指定需要的列可以减少数据传输量,提高性能。 四、执行计划分析 MySQL提供EXPLAIN...
- **左外连接 (LEFT OUTER JOIN)**:返回左表的所有行,即使在右表中没有匹配的行,对于右表中不存在的匹配行,结果为NULL。 - **右外连接 (RIGHT OUTER JOIN)**:与之相反,返回右表的所有行,左表中没有匹配的行...
在MySQL数据库管理系统中,JOIN操作是连接不同表的关键技术,用于检索来自两个或更多相关表的数据。本资源“Joins_MySQL”很显然是为了帮助用户深入理解和实践MySQL中的JOIN操作。下面将详细介绍JOIN的不同类型及其...
- 外连接分为左外连接(LEFT JOIN)、右外连接(RIGHT JOIN)和全外连接(FULL OUTER JOIN),但在MySQL中,全外连接不被支持。 - **左外连接(LEFT JOIN)**:返回左表的所有行,即使右表没有匹配的行,右表的...
MySQL关联查询是数据库操作中的重要概念,用于在多个表之间建立连接,以便从不同表中检索相关数据。关联查询能够让我们在单个SQL语句中处理来自多个表的数据,极大地提高了数据查询的效率和灵活性。这里我们将深入...
例如,在 MySQL 中并不直接支持全外连接,但在其他如 Oracle 或 SQL Server 中,则可以直接使用 `FULL OUTER JOIN`。 **注意事项:** - `WHERE` 子句和 `ON` 子句的区别:通常建议将连接条件放在 `ON` 子句中,而将...
- 左外连接(LEFT OUTER JOIN 或 LEFT JOIN):返回左表的所有行,即使在右表中没有匹配的行。对于右表中不存在的匹配,结果将填充NULL值。 - 右外连接(RIGHT OUTER JOIN 或 RIGHT JOIN):与左外连接相反,返回右表...