mysql的左连接多个条件查询_mysql——多表——外连接查询——左连接、右连接、复合条件查询...

本文介绍了MySQL中的外连接查询,包括左连接和右连接的使用方法。通过示例展示了如何根据共同字段连接employee和department表,以及如何添加复合条件进行更精确的查询。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

create table employee ( num int(50),

d_idint(50),

namevarchar(50),

ageint(50),

sexvarchar(50),

homeaddvarchar(50)

);insert into employee values(1,1001,'zhangsan',26,'nan','beijing');insert into employee values(2,1001,'lisi',24,'nv','hunan');insert into employee values(3,1002,'wangwu',25,'nan','jiangsu');insert into employee values(4,1004,'aric',15,'nan','yingguo');select * fromemployee;create table department ( d_id int(50),

d_namevarchar(50),

functionevarchar(50),

addressvarchar(50)

);insert into department values(1001,'keyanbu','yanfachanpin','3lou5hao');insert into department values(1002,'shengchanbu','shengchanchanp','5louyiceng');insert into department values(1003,'xiaoshoubu','cehuaxiaoshou','1louxiaoshoudating');select * fromdepartment;select num,name,employee.d_id,age,sex,d_name,functione from employee,department where employee.d_id =department.d_id;

内连接查询:可以查询两个或者两个以上的表,当两个表中存在表示相同意义的字段时,可以通过该字段来连接这两个表;

当该字段的值相等时,就查询出该记录。======================================================================================================================外连接查询:可以查询两个或者两个以上的表,外连接查询也需要通过指定字段来进行连。

当该字段取值相等时,可以查询出该记。

而且该字段取值不相等的记录也可以查询出来。

外连接包括:左连接、右连接

语法:select 属性列表 from 表名1 left | right join 表名2 on 表名1.属性名1 =表名2.属性名2;

属性列表表示要查询的字段的名称,这些字段可以来自不同的表;

Left表示左连接查询;

rigth表示右连接查询;

on后面接的是连接的条件;1、左连接查询

进行左连接查询时,可以查询出表名1所指的表中的所有记录。而表名2所指的表中,只能查询出匹配的记录select * fromemployee;select * fromdepartment;select num,name,employee.d_id,age,sex,d_name,functione from employee left join department on employee.d_id =department.d_id;2、右连接查询

进行右连接查询时,可以查询出表名2所指的表中的所有记录。而表名1所指的表中,只能查询出匹配的记录select * fromemployee;select * fromdepartment;select num,name,employee.d_id,age,sex,d_name,functione from employee right join department on employee.d_id =department.d_id;

复合条件查询

在连接查询时,通过增加其他的限制条件,可以使查询结果更加准确select * fromemployee;select * fromdepartment;select num,name,employee.d_id,age,sex,d_name,functione from employee,department where employee.d_id =department.d_id;select num,name,employee.d_id,age,sex,d_name,functione from employee,department where employee.d_id = department.d_id and age > 24;select num,name,employee.d_id,age,sex,d_name,functione from employee,department where employee.d_id = department.d_id order by age asc;select语句先按照内连接的方式从employee和department表中查询出数据。然后查询结果按照age字段从小到大的顺序进行排序。=================================================================================================================================

前期准备表语句:

create table employee ( num int(50),

d_idint(50),

namevarchar(50),

ageint(50),

sexvarchar(50),

homeaddvarchar(50)

);insert into employee values(1,1001,'zhangsan',26,'nan','beijing');insert into employee values(2,1001,'lisi',24,'nv','hunan');insert into employee values(3,1002,'wangwu',25,'nan','jiangsu');insert into employee values(4,1004,'aric',15,'nan','yingguo');select * fromemployee;create table department ( d_id int(50),

d_namevarchar(50),

functionevarchar(50),

addressvarchar(50)

);insert into department values(1001,'keyanbu','yanfachanpin','3lou5hao');insert into department values(1002,'shengchanbu','shengchanchanp','5louyiceng');insert into department values(1003,'xiaoshoubu','cehuaxiaoshou','1louxiaoshoudating');select * from department;

select * from employee;

90edbbc61d9a92ddd0ae7148f70f8cbc.png

select * from department;

ee4dd62eda6f53907df03da3ff7dad53.png

左连接查询:

语法:

select   属性列表   from   表名1    left | right   join    表名2   on    表名1.属性名1    =   表名2.属性名2;

属性列表表示要查询的字段的名称,这些字段可以来自不同的表;

Left表示左连接查询;

rigth表示右连接查询;

on后面接的是连接的条件;

1、左连接查询

进行左连接查询时,可以查询出表名1所指的表中的所有记录。而表名2所指的表中,只能查询出匹配的记录

select num,name,employee.d_id,age,sex,d_name,functione from employee left join department on employee.d_id = department.d_id;

fb45dd496d986ce7a8bc937c3769cb5d.png

2、右连接查询

进行右连接查询时,可以查询出表名2所指的表中的所有记录。而表名1所指的表中,只能查询出匹配的记录

select num,name,employee.d_id,age,sex,d_name,functione from employee right join department on employee.d_id = department.d_id;

d57c1738004820f62d4bccab8308b6ad.png

3、复合条件查询

在连接查询时,通过增加其他的限制条件,可以使查询结果更加准确

select num,name,employee.d_id,age,sex,d_name,functione from employee,department where employee.d_id =department.d_id;select num,name,employee.d_id,age,sex,d_name,functione from employee,department where employee.d_id = department.d_id and age > 24;select num,name,employee.d_id,age,sex,d_name,functione from employee,department where employee.d_id = department.d_id order by age asc;

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值