对MySQL几种联合查询的通俗解释_Mysql

表a

aid adate
1 a1
2 a2
3 a3

表b

bid bdate
1 b1
2 b2
4 b4

两个表a、b相连接,要取出id相同的字段。

select * from a inner join b on a.aid = b.bid

这是仅取出匹配的数据。

此时的取出的是:

1 a1 b1
2 a2 b2

那么left join 指:

select * from a left join b on a.aid = b.bid

首先取出a表中所有数据,然后再加上与a、b匹配的的数据。

此时的取出的是:

1 a1 b1
2 a2 b2
3 a3 空字符

同样的也有right join

指的是首先取出b表中所有数据,然后再加上与a、b匹配的的数据。

此时的取出的是:

1 a1 b1
2 a2 b2
4 空字符 b4

LEFT JOIN 或 LEFT OUTER JOIN。

左向外联接的结果集包括 LEFT OUTER 子句中指定的左表的所有行,而不仅仅是联接列所匹配的行。如果左表的某行在右表中没有匹配行,则在相关联的结果集行中右表的所有选择列表列均为空值。

实例

"Persons" 表:

Id_P LastName FirstName Address City
1 Adams John Oxford Street London
2 Bush George Fifth Avenue New York
3 Carter Thomas Changan Street Beijing

"Orders" 表:

Id_O OrderNo Id_P
1 77895 3
2 44678 3
3 22456 1
4 24562 1
5 34764 65

左连接(LEFT JOIN)实例

现在,我们希望列出所有的人,以及他们的定购 - 如果有的话。

您可以使用下面的 SELECT 语句:

SELECT Persons.LastName, Persons.FirstName, Orders.OrderNo
FROM Persons
LEFT JOIN Orders
ON Persons.Id_P=Orders.Id_P
ORDER BY Persons.LastName

结果集:

LastName FirstName OrderNo
Adams John 22456
Adams John 24562
Carter Thomas 77895
Carter Thomas 44678
Bush George

LEFT JOIN 关键字会从左表 (Persons) 那里返回所有的行,即使在右表 (Orders) 中没有匹配的行。

以上是小编为您精心准备的的内容,在的博客、问答、公众号、人物、课程等栏目也有的相关内容,欢迎继续使用右上角搜索按钮进行搜索联合查询
mysql多表联合查询、mysql 联合查询、mysql三表联合查询、mysql多库联合查询、mysql两个表联合查询,以便于您获取更多的相关知识。

时间: 2024-12-02 23:49:03

对MySQL几种联合查询的通俗解释_Mysql的相关文章

MySQL多表联合查询sql语句

最简的一种联合查询  代码如下 复制代码 SELECT * FROM table1 n, table2 i WHERE n.itemid = i.itemid 例 推广地点表promotion_addr字段:name,id 电话报竣表unicom_record字段:date, sheet_id(关联sheet表id) 报单表sheet字段:id,promotion_addr_id(关联promotion_addr表id) 要求统计某个月已报竣各推广地点的推广个数:    代码如下 复制代码  

mysql-PHP MYSQL 两表联合查询问题

问题描述 PHP MYSQL 两表联合查询问题 现在有两个表,第一个201411,第二个user_list, 第一个是存放用户相关的数据,第二个是存放登录用户名和密码的信息. 他们有一个共有的字段:username, 现在要如何才能调用和显示在登陆了user_list的账号(username)的201411这张表里面的其他信息. 解决方案 SELECT T2.* FROM user_list T1 INNER JOIN 201411 T2 ON T1.username = T2.username

详解Mysql多表联合查询效率分析及优化_Mysql

1. 多表连接类型1. 笛卡尔积(交叉连接) 在MySQL中可以为CROSS JOIN或者省略CROSS即JOIN,或者使用','  如: SELECT * FROM table1 CROSS JOIN table2 SELECT * FROM table1 JOIN table2 SELECT * FROM table1,table2         由于其返回的结果为被连接的两个数据表的乘积,因此当有WHERE, ON或USING条件的时候一般不建议使用,因为当数据表项目太多的时候,会非常慢

mysql中利用联合查询批量处理数据(更新,查询,统计)语句

# 联合查询回复数  代码如下 复制代码 SELECT ask.id, count( answer.father_id ) , ask.answer_num FROM `表名_ask` AS ask LEFT JOIN `表名_answer` AS answer ON ask.id = answer.father_id GROUP BY answer.father_id ORDER BY ask.id ASC # 修改城市ID  代码如下 复制代码 UPDATE 表名_ask SET cityi

MySQL学习:联合查询效率分析

user表: id name 1 libk 2 zyfon 3 daodao user_action表 user_id action 1 jump 1 kick 1 jump 2 run 4 swim sql语句: SELECT id, name, action from user as u left join user_action a on u.id = a.user_id 结果: id name action 1 libk jump 1 libk kick 1 libk jump 2 zy

mysql多表联合查询返回一张表的内容实现代码_Mysql

今天在使用mysql语句的时候老是报错,语句如下: Sql代码 复制代码 代码如下: SELECT sapcle FROM SellEnterpriseBaseInfor sebie,SellEnterpriseBaseInforVer sebive,SellApplyPermitChangeList sapcle WHERE 1=1 AND sebie.iVerID = sebive.id AND sapcle.iEnterpriseBaseInforID=sebive.id AND sapc

mysql两表联合查询,两个表结构一样,多个字段中的3个字段,只要这3个字段有重复的就罗列出来

问题描述 a表与b表字段都是相同的,字段为:险种,车牌,发动机号,车大架号现在想实现的是:只要a表的险种与b表的险种相同,并且a表的车牌,发动机号,车大架号与b表的车牌,发动机号,车大架号只要3个中的一个相同,则显示出来相同的记录.a表创建及记录:DROP TABLE IF EXISTS `a`;CREATE TABLE `a` ( `xianzhong` varchar(30) DEFAULT NULL, `chepai` varchar(20) DEFAULT NULL, `fadongji

MySQL中的基本查询语句学习笔记_Mysql

1.基本查询语句select 属性列表 from 表名和视图列表 [where 条件表达式1] [group by 属性名1 [having 条件表达式2]] [order by 属性名2 [asc|desc]]2.单表查询1)使用*查询所有字段 select * from 表名: 2) 查询指定字段 select id,name from product: 使用上面例子可以查询指定字段 3)查询指定记录 where 条件表达式 实例: select *from employee where i

mysql三种批量增加的性能分析_Mysql

下面把代码写出来,希望大家批评指正. 首先domain对象.在这里使用的注解的方式,都是比较新的版本. User.java 复制代码 代码如下: package com.bao.sample.s3h4.domain; import javax.persistence.Column; import javax.persistence.Entity; import javax.persistence.GeneratedValue; import javax.persistence.Generatio