sql 怎么通过多个条件连接2张表

比如2张表:test1,test2
其中,2张表中号码有重复的,日期(月份)肯定也重复,但通过 日期(月份)、号码这2个条件就不会有重复的了,怎么把两种表通过这两个条件关联在一起。
但是我想让test1 表中所有数据都显示出来,用where语句会不会丢失哦?

实现的方法和详细的操作步骤如下:

1、第一步,构建两个表,然后分别插入数据,如下图所示,然后进入下一步。

2、其次, LEFT
 JOIN:左联接。 即使右表中没有匹配项,所有行也会从左表中返回。 如果右表不匹配,则将其填充为空,如下图所示,然后进入下一步。

3、接着, RIGHT
 JOIN:右联接,即使左表中没有匹配项,所有行也会从右表中返回,如下图所示,然后进入下一步。

4、然后, FULL
 JOIN:完整的外部联接,只要其中一个表中存在匹配项,就会返回该行,如下图所示,然后进入下一步。

5、最后,cross join:交叉联接,两个表的倍数select * from Emp cross join Nation,如下图所示。这样,问题就解决了。

温馨提示:答案为网友推荐,仅供参考
第1个回答  2019-08-15

1、首先建两张表,分别插入数据。

2、LEFT JOIN:左连接,即使右表中没有匹配,也从左表返回所有的行, 右表不匹配的用null 填充。

3、RIGHT JOIN:右连接,即使左表中没有匹配,也从右表返回所有的行。

4、FULL JOIN:完整外连接,只要其中一个表中存在匹配,则返回行。

5、cross join: 交叉连接,两表的倍数select * from Emp cross join Nation。

本回答被网友采纳
第2个回答  推荐于2017-10-14

多个条件用where……and……连接即可,举例如下:

1、创建测试表,插入数据:

create table dept 
(did int,
dname varchar(20)) --创建dept系别表

insert into dept values (1,'计算机系')
insert into dept values (2,'数学系')
insert into dept values (3,'物理系')

create table student
(sid int,
sname varchar(10),
sage int,
ssex varchar(4),
sdept int) --创建学生表


insert into student values (1,'张三',20,'男',1)
insert into student values (2,'李四',21,'男',1)
insert into student values (3,'王五',19,'女',1)
insert into student values (4,'赵六',21,'男',2)
insert into student values (5,'孙七',18,'女',2)
insert into student values (6,'杨八',21,'男',3)
insert into student values (7,'刘九',20,'女',4)

/*2张表通过dept表中的did和student表中的sdept字段关联*/

2、要求查询计算机系并且是女生,年龄小于20岁的人的信息。可用如下语句:

select b.* from dept a,student b where a.did=b.sdept 
and b.ssex='女' and b.sage<20 and a.dname='计算机系'

如图,其中红线标注的地方就是多条件连接的方法:

第3个回答  2011-10-27
例如:
select t1.a,t1.b,t2.c,t2.c from test1 t1 ,test2 t2 where t1.dateMonth= t2.dateMonth
这样就可以了
第4个回答  2011-10-27
select * from test1 a
left join test2 b on a.日期=b.日期 and a.号码=b.号码本回答被提问者采纳
相似回答