mysql教程左連接sql left join 語句詳解
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