
用sql语句显示A,B两个表的结果,A,B结构一样,用姓名和日期关联,显示结
用sql语句显示A,B两个表的结果,A,B结构一样,用姓名和日期关联,显示结果中要求B表中姓名和日期与A表一致的显示B表内容,否则显示A表内容。我写了一个但是只能显示出来...
用sql语句显示A,B两个表的结果,A,B结构一样,用姓名和日期关联,显示结果中要求B表中姓名和日期与A表一致的显示B表内容,否则显示A表内容。我写了一个但是只能显示出来A,B表不一样的内容,请大神指点。
展开
2个回答
展开全部
创建测试表:
create table a
(姓名 varchar(10),
日期 varchar(10),
其他 varchar(10))
create table b
(姓名 varchar(10),
日期 varchar(10),
其他 varchar(10))
insert into a values ('张三','2017-01-01',1)
insert into a values ('李四','2017-02-01',2)
insert into b values ('张三','2017-01-01',3)
insert into b values ('王五','2017-03-01',4)
这样的话最后显示数据应该是b表里张三那条还有a表里李四那条。
运行语句:
select b.* from a,b where a.姓名=b.姓名 and a.日期=b.日期 and b.姓名 is not null
union all
select a.* from a where not exists (select 1 from b where a.姓名=b.姓名 and a.日期=b.日期 and b.姓名 is not null)
结果:
更多追问追答
追问
我按照你的方法试了一下,结果出来的a表中如果符合姓名和日期都跟b表中的一样的数据超过一条,结果中都会显示,能不能控制只显示一条呢?请赐答。
追答
union all改成union再执行语句运行一下
select b.* from a,b where a.姓名=b.姓名 and a.日期=b.日期 and b.姓名 is not null
union
select a.* from a where not exists (select 1 from b where a.姓名=b.姓名 and a.日期=b.日期 and b.姓名 is not null)
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询