Mysql左连接sql语句详解

MySQL左连接查询是联合查询中的一种方式,就是说把两个相关的表通过这种方式联合在一起查询,从而更加方便调用数据,避免多层循环嵌套。

左连接查询所用关键字 left join
,书面解释如下:

左外连接(左连接):结果集既包括连接表的匹配行,也包括左连接表的所有行。
下面我解释一下,也就是说左链接查询的返回结果既包含了left join关键字左边表的全部资料,同时也包含了与左表匹配的右表中的符合条件的资源。 简单的说就是以左表为中心,连带右表中的符合条件的资源。

Sql语句的写法:

SQL: select a.a, a.b, a.c, b.c, b.d, b.f from a LEFT OUT JOIN b ON a.a = b.c

相信大家看完之后一定很晕把,没关系,我解释一下大家就都明白了,看似复杂,其实条理很清楚。它的意思是:


select a.a , a.b

a.a 就是a表中的a字段的意思。


Select与from之间放的就是a表 b表中的相关要查询的字段。


from a LEFT OUT JOIN b
就是 从以a表为主左链接上右表b ,
匹配条件是 a表的a字段等于b表的c字段。

通过这几点解释相信大家也都明白百分之八十了,下面我们通过实例的演示再给大家说一下:

首先建立两个表

表pic
用于存放图片名字的表

CREATE TABLE `image`.`pic` (

`id` INT( 10 ) NOT NULL AUTO_INCREMENT PRIMARY KEY ,
`pname` VARCHAR( 20 ) CHARACTER SET utf8 COLLATE utf8_unicode_ci NOT NULL

) ENGINE = InnoDB

表二 用于存放图片评论的

CREATE TABLE `image`.`comment` (

`id` INT( 10 ) NOT NULL AUTO_INCREMENT PRIMARY KEY ,
`pid` INT( 10 ) NOT NULL ,
`content` VARCHAR( 20 ) CHARACTER SET utf8 COLLATE utf8_unicode_ci NOT NULL

) ENGINE = InnoDB

下面我要联合查询这两个表通过一条sql语句,注意以前咱们查询两个表肯定是先写一个表的sql然后在根据条件循环查询另一个表,现在不用了,通过这种查询,把返回结果放到一个数组中,

Sql语句写法:select
pic.*,comment.*
from
pic left join comment
on
pic.id=comment.pid

代码如下:
$conn = mysql_connect(“localhost”,”root”,””);
if(!$conn){
die(‘连接MySQL数据库失败: ‘ . mysql_error());
}

mysql_select_db(‘image’);

$sql=”select
pic.*,comment.*
from
pic left join comment
on
pic.id=comment.pid”;
$re=mysql_query($sql);
while($re1=mysql_fetch_array($re))
{
$arr[]=$re1;
}
print_r($arr);

打印结果如下:

Array
(
[0] => Array
(
[0] => 1
[id] => 1
[1] => aaaaaaaaa
[pname] => aaaaaaaaa
[2] => 1
[3] => 1
[pid] => 1
[4] => ccccccc
[content] => ccccccc
)
[1] => Array
(
[0] => 2
[id] => 2
[1] => bbbbbbbbbbb
[pname] => bbbbbbbbbbb
[2] => 2
[3] => 2
[pid] => 2
[4] => vvvvvvv
[content] => vvvvvvv
)
)
Ok

0 0 投票数
文章评分
订阅评论
提醒
guest

1 评论
最旧
最新 最多投票
内联反馈
查看所有评论
张三
2012年4月13日 10:12

哎,很郁闷啊,学了这么久sql,我居然还搞不清楚左右连接

1
0
希望看到您的想法,请您发表评论x