Mysql左连接sql left join 语句详解

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

 

时间: 2024-07-28 22:32:20

Mysql左连接sql left join 语句详解的相关文章

MSSQL内外连接(INNER JOIN)语句详解_MsSql

在之前,我对MSSQL中的内连接和外连接所得出的数据集不是很清楚.这几天重新温习了一下SQL的书本,现在的思路应该是很清楚了,现在把自己的理解发出来给大家温习下.希望和我一样对SQL的连接语句不太理解的朋友能够有所帮助.(发这么菜的教程,各位大大们别笑话偶了,呵:D ) 有两个表A和表B.表A结构如下:Aid:int:标识种子,主键,自增IDAname:varchar 数据情况,即用select * from A出来的记录情况如下图1所示: 图1:A表数据 表B结构如下:Bid:int:标识种子

MSSQL内外连接(INNER JOIN)语句详解

在之前,我对MSSQL中的内连接和外连接所得出的数据集不是很清楚.这几天重新温习了一下SQL的书本,现在的思路应该是很清楚了,现在把自己的理解发出来给大家温习下.希望和我一样对SQL的连接语句不太理解的朋友能够有所帮助.(发这么菜的教程,各位大大们别笑话偶了,呵:D ) 有两个表A和表B. 表A结构如下: Aid:int:标识种子,主键,自增ID Aname:varchar 数据情况,即用select * from A出来的记录情况如下图1所示: 图1:A表数据 表B结构如下: Bid:int:

MySQL Left Join,Right Join语句详解

在SQL标准中规划的(Join)联结大致分为下面四种: 1. 内联结:将两个表中存在联结关系的字段符合联结关系的那些记录形成记录集的联结. 2. 外联结:分为外左联结和外右联结. 左联结A.B表的意思就是将表A中的全部记录和表B中联结的字段与表A的联结字段符合联结条件的那些记录形成的记录集的联结,这里注意的是最后出来的记录集会包括表A的全部记录. 右联结A.B表的结果和左联结B.A的结果是一样的,也就是说:  代码如下 复制代码 Select A.name B.name From A Left

sql left join 命令详解_数据库其它

给个通俗的解释吧. 例表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,

MYSQL 左连接右连接和内连接的详解及区别_Mysql

MYSQL 左连接右连接和内连接的区别,这里就对这些概念经过一个实例,讲解清楚. 代码如下: drop table table1; CREATE TABLE `andrew`.`table1` ( `name` VARCHAR(32) NOT NULL, `city` VARCHAR(32) NOT NULL ) ENGINE = MyISAM; insert into TABLE1(name, city) values ('Person A', 'BJ'); insert into TABLE

批量杀死MySQL连接的几种方法详解

批量杀死MySQL连接的几种方法详解 官网:https://dev.mysql.com/doc/refman/5.6/en/kill.html 13.7.6.4 KILL Syntax Press CTRL+C to copy KILL [CONNECTION | QUERY] processlist_id Each connection to mysqld runs in a separate thread. You can kill a thread with the KILL proces

MyBatis 执行动态 SQL语句详解_java

大家基本上都知道如何使用 MyBatis 执行任意 SQL,使用方法很简单,例如在一个 XXMapper.xml 中: <select id="executeSql" resultType="map"> ${_parameter} </select> 你可以如下调用: sqlSession.selectList("executeSql", "select * from sysuser where enabled

mysql 左连接时在不考虑where条件下主表可以使用索引吗

问题描述 mysql 左连接时在不考虑where条件下主表可以使用索引吗 这是我explain下的分析结果,就差主表没有使用索引了: 主表有30万数据,副表数据上千.全部使用左连接关联5个表查询时5秒以上.希望大神给指个路,思路就行 >

SQL Server COALESCE函数详解及实例_Mysql

SQL Server COALESCE函数详解 很多人知道ISNULL函数,但是很少人知道Coalesce函数,人们会无意中使用到Coalesce函数,并且发现它比ISNULL更加强大,其实到目前为止,这个函数的确非常有用,本文主要讲解其中的一些基本使用:   首先看看联机丛书的简要定义:  返回其参数中第一个非空表达式语法:  COALESCE ( expression [ ,...n ] ) 如果所有参数均为 NULL,则 COALESCE 返回 NULL.至少应有一个 Null 值为 NU