mysql中left join多表联查询语句

最初我们用天最多的如果没用left join我们就会如

 代码如下 复制代码

select c.nom, e.nom  
from consultant c, affaire a, besoin b, salarie sa, site s, entreprise e 
where c.consultant_id=a.consultant_id and a.besoin_id=b.besoin_id and  
b.salarie_id=sa.salarie_id and ssa.site_id=s.site_id and s.entreprise_id=e.entreprise_id 

上面的写法不好同时也不如left join效绿好

left join

 代码如下 复制代码

SELECT
A.ID, A.NUMBER, A.PRICE, A.ORDER_TIME, B.USER_ID, B.STARTIME, B.STOPTIME,
C.CHANNEL_PAY, D.COMPANY
FROM
D表 D
LEFT JOIN
A表 A ON A.COMPANY_ID = D.UID
LEFT JOIN
B表 B ON B.COMPANY_ID = D.UID
LEFT JOIN
C表 C ON C.COMPANY_ID = D.UID
有条件的再加行:
WHERE ……….
排序(如A表的ID由大到小排):
ORDER BY A.ID DESC

多表联查的还可用inner join方法

 代码如下 复制代码

select c.nom, e.nom  from consultant c  inner join affaire a on c.consultant_id=a.consultant_id  inner

join besoin b on a.besoin_id=b.besoin_id  inner join salarie sa on b.salarie_id=sa.salarie_id  inner

join site s on ssa.site_id=s.site_id  inner join entreprise e on s.entreprise_id=e.entreprise_id 

注意

多表联合查询有好多总方式right join、inner join、full join这里不一一介绍了。

时间: 2024-09-23 12:03:23

mysql中left join多表联查询语句的相关文章

MySQL中基本的多表连接查询教程_Mysql

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

信息-mysql中有关两张表关联的查询语句

问题描述 mysql中有关两张表关联的查询语句 宝宝信息表中存的是已经接种过疫苗的信息,is_vaccined为1,另外一张表中,存的是所有疫苗的详细信息.现在,我想通过获取宝宝id来查询该宝宝所有的疫苗的状态(包括已经接种的和未接种的),改怎么写查询语句?? 解决方案 select t1.*, t2.* from t_baby_info t1 left outer join t_vaccine t2 on t1.vaccine_id= t2.vaccine_id 解决方案二: @caozhy

在MySQL中使用JOIN语句进行连接操作的详细教程_Mysql

到目前,我们已经学习了从一个表中获取数据.这是简单的需要,但在大多数现实MySQL的使用,经常需要将数据从多个表中的一个单一的查询. 可以使用多个表中的单一SQL查询.在MySQL中联接(join)行为是指两个或多个表到一个表中可以使用连接在SELECT,UPDATE和DELETE语句中加入MySQL表.我们将看到一个例子LEFT JOIN简单的MySQL连接.在命令提示符使用联接: 假设我们两个表的教程tcount_tbl和tutorials_tbl的完整列表如下: 例子: 试试下面的例子:

sql中怎样在多表联合查询后的表中进行增删改操作,新手求大神详细讲解

问题描述 sql中怎样在多表联合查询后的表中进行增删改操作,新手求大神详细讲解 我在C#的winform的DataGridView中显示联合查询的结果,下面就是4张表的联合查询的语句,我需要在DataGridView显示的表中做删除操作,只需要知道删除的sql语句就行,用存储过程也好,级联删除也好,希望详细,我已经在这个问题上困扰很久了,万分感谢! 解决方案 在做C#桌面程序时,我们通常会遇到删除dataGridview中选中的一和或都多行数据,在网上查了好多方法,有些只能删除dataGridv

MYSQL中多对多关系的数据查询处理,请大神指点

问题描述 MYSQL中多对多关系的数据查询处理,请大神指点 用户表 create table user( uid int primary key auto_increment, uname varchar(30), uaddress varchar(15)) 订单表 create table orders( oid int primary key auto_increment, uid int not null, address varchar(70)); 商品表 create table pr

Oracle、MySQL和SqlServe三种数据库分页查询语句的区别介绍

先来定义分页语句将要用到的几个参数: int currentPage ; //当前页 int pageRecord ; //每页显示记录数 以之前的ADDRESSBOOK数据表为例(每页显示10条记录): 一.SqlServe下载 分页语句 String sql = "select top "+pageRecord +" * from addressbook where id not in (select top "+(currentPage-)*pageRecor

sqlserver中操作主从关系表的sql语句

sqlserver中操作主从关系表的sql语句,重点讲解,科目信息传递过后怎么处理.假设从表Tb_StudentSubject 存在StudentId,SubjectId两个字段.那么代码如下: 复制代码 代码如下: Create proc SaveInfo ( ---参数列表不再逐一书写 @subjectList varchar(400)) as begin tran --新增或修改主表 省略 DECLARE @subjectID int, @subjectIDsLen int,--科目长度

mysql中LEFT JOIN查询两个表的差集

  今天在做一个微信墙的抽奖程序的时候遇到了一个问题,我需要查询量表的差集,业务情形是这样的 一个表用来保存抽奖用户的(www.111cn.net 一个人可能会有多条数据),而另一张表保存的是中奖的用户,我需要报么有中奖的所用用户查找出来,刚开始用的是where进行多表关联查询,但是最终发现当中奖表中么有数据的时候是查找不到任何信息的,改用LEFT JOIN 用这个就很简单了,  代码如下   DESC SELECT *  FROM  `enet_wall_list` AS l LEFT JOI

mysql LEFT JOIN多表联结查询

具体操作 MySQL支持Select和某些Update和Delete情况下的Join语法,具体语法上的细节有:  table_references:     table_reference [, table_reference] -  table_reference:     table_factor   | join_table  table_factor:     tbl_name [[AS] alias]         [{USE|IGNORE|FORCE} INDEX (key_lis