INNER JOIN通过结合基于联接谓词两个表(表1和表2)列值创建一个新的结果表。查询比较表1中的每一行与表2中的每一行,找到所有满足联接谓词的行。 当联接谓词被满足时,对于每个匹配的一对A和B的列值被组合成一个结果行。
INNER JOIN基本语法如下:
SELECT table1.column1, table2.column2...
FROM table1
INNER JOIN table2
ON table1.common_field = table2.common_field
select store_id,address from address inner join store on address.address_id=store.address_id
SQL LEFT JOIN返回所有行左表,即使存在左表中没有匹配。这意味着,如果在ON子句在右边的表匹配0(零)个记录,则连接将仍然在结果返回一行,但用NULL显示在右表中的每一列中。
这意味着,一个左连接从左表中返回所有值,再加上如果右表没有匹配就使用NULL值代替返回。
LEFT JOIN的基本语法如下:
SELECT table1.column1, table2.column2...
FROM table1
LEFT JOIN table2
ON table1.common_field = table2.common_field
在这里,给定的条件可能是根据您的需要任意给定表达式。
select address,store_id from address left join store on address.address_id=store.address_id limit 20
SQL RIGHT JOIN返回右表所有行,即使在左表中没有匹配。这意味着,如果ON子句匹配左表0(零)记录, 连接仍返回一行结果,但用NULL代替左表中的每一列。
这意味着,一个右连接返回右表所有的值,再加上如果没有匹配左表时使用NULL值。
RIGHT JOIN的基本语法如下:
SELECT table1.column1, table2.column2...
FROM table1
RIGHT JOIN table2
ON table1.common_field = table2.common_field
示例
select address,store_id from store right join address on address.address_id=store.address_id limit 10
从这一个开始,MySQL不提供正式的一步到位的关键字,效果全靠自己模拟。
左连接是得到A表中去除B表内容的剩下的部分,也就是A表独有的一部分。可以看做是在左外连接的结果中将双方共有的部分去掉得到的。
select address,store_id from address left join store on address.address_id=store.address_id where store_id is null limit 10
同理,右连接是在右外连接的结果中得到B表独有的那一部分
示例
select address,store_id from store right join address on address.address_id=store.address_id where store.store_id is null limit 10
全连接顾名思义是获得AB两表全部的数据,oracle提供了 full join关键字完成这一功能,但是MySQL没有。不过MySQL中可以借助union达到这个效果,union的作用是合并两个查询的结果。
两表的全连接中除去重合的部分,即两张表分别的特有部分的合集。
数据库中INNER JOIN的意思是组合两个或多个表中在公共字段之中有相符的值的记录。也就是根据列的关系整合多张表的记录。举个例子如下。
"Persons" 表,主键是"Id_P" 列,每个表中的主键都是唯一的列:
"Orders" 表,主键是"Id_O" 列,"Id_P" 列将两张表联系起来:
使用关键词 INNER JOIN 从两个表中获取数据。下面的SELECT 语句列出了所有人的订购:
SELECT Persons.LastName, Persons.FirstName, Orders.OrderNoFROM Persons
INNER JOIN OrdersON
Persons.Id_P = Orders.Id_P
ORDER BY Persons.LastName
join 用于根据两个或多个表中的列之间的关系,从这些表中查询数据。JOIN: 如果表中有至少一个匹配,则返回行
LEFT JOIN: 即使右表中没有匹配,也从左表返回所有的行
RIGHT JOIN: 即使左表中没有匹配,也从右表返回所有的行
FULL JOIN: 只要其中一个表中存在匹配,就返回行
SQL INNER JOIN 关键字
在表中存在至少一个匹配时,INNER JOIN 关键字返回行。
INNER JOIN 关键字语法
SELECT column_name(s)
FROM table_name1
INNER JOIN table_name2
ON table_name1.column_name=table_name2.column_name
注释:INNER JOIN 与 JOIN 是相同的。
SQL LEFT JOIN 关键字
LEFT JOIN 关键字会从左表 (table_name1) 那里返回所有的行,即使在右表 (table_name2) 中没有匹配的行。
LEFT JOIN 关键字语法
SELECT column_name(s)
FROM table_name1
LEFT JOIN table_name2
ON table_name1.column_name=table_name2.column_name
SQL RIGHT JOIN 关键字
RIGHT JOIN 关键字会右表 (table_name2) 那里返回所有的行,即使在左表 (table_name1) 中没有匹配的行。
RIGHT JOIN 关键字语法
SELECT column_name(s)
FROM table_name1
RIGHT JOIN table_name2
ON table_name1.column_name=table_name2.column_name
注释:在某些数据库中, RIGHT JOIN 称为 RIGHT OUTER JOIN。
SQL FULL JOIN 关键字
只要其中某个表存在匹配,FULL JOIN 关键字就会返回行。
FULL JOIN 关键字语法
SELECT column_name(s)
FROM table_name1
FULL JOIN table_name2
ON table_name1.column_name=table_name2.column_name
注释:在某些数据库中, FULL JOIN 称为 FULL OUTER JOIN。
http://www.w3school.com.cn/sql/sql_join.asp
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)