多表查询

多表查询

多表查询:内连接,左连接,右连接,完全连接。两个表之间肯定有一个字段相同查询时附带某种联系

表一:cms_commend: 

 

表二:cms_user: 


 

 两个表之间关联字段是user。

内连接(INNER JOIN或者JOIN):

SELECT 
	c.cid,
	c.id,
	c.user,
	c.manner,
	c.content,
	c.date,
	c.sustain,
	c.oppose,
	u.face
FROM 
	cms_commend c
JOIN
	cms_user u
ON
	c.user=u.user
WHERE 
	c.cid=10
ORDER BY
	c.date DESC

 结果:


分析:两个表必须在满足各自的查询条件下并且有相应的查询结果才能将结果组合成新表。另外和下面的语句结果一样:

SELECT 
	c.cid,
	c.id,
	c.user,
	c.manner,
	c.content,
	c.date,
	c.sustain,
	c.oppose,
	u.face
FROM 
	cms_commend c,

	cms_user u
WHERE
	c.user=u.user
AND 
	c.cid=10
ORDER BY
	c.date DESC

 左连接(LEFT JOIN)又称左外连接(LEFT OUTER JOIN):语句中的前一张表查询的数据全部返回,和第二张表查询的数据组合在一起

SELECT 
	c.cid,
	c.id,
	c.user,
	c.manner,
	c.content,
	c.date,
	c.sustain,
	c.oppose,
	u.face
FROM 
	cms_commend c
LEFT JOIN
	cms_user u
ON
	c.user=u.user
WHERE 
	c.cid=10
ORDER BY
	c.date DESC

此语句中前一张表是cms_commend,后一张表是cms_user。左连接可以看作以查询第一张为主再加上第二张要查询的,ON里是第二张查询的条件,把结果组成新的结果表,如果第二张表中没有找到结果就用null代替。总结:不管第二张表有没有数据第一张都要返回结果并且和第二张表查询的结果组成新的结果表,组成一条的条件是ON后面的条件,所以第一张结果可能每条组成不止一条;

3,右连接(RIGHT JOIN)又称右外连接(RIGHT OUTER JOIN):

SELECT 
	c.cid,
	c.id,
	c.user,
	c.manner,
	c.content,
	c.date,
	c.sustain,
	c.oppose,
	u.face
FROM 
	cms_commend c
RIGHT JOIN
	cms_user u
ON
	c.user=u.user
WHERE 
	c.cid=10
ORDER BY
	c.date DESC

两个表必须再满足各自的查询条件下但是第一张表查询结果可以为空,将结果组合成新表。

总结:不管第一张表有没有数据第二张都要返回结果并且和第一张表查询的结果组成新的结果表。

 mysql:FULL JOIN查询出错;

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值