各位高手,我想通过在A表和B表中查询姓名,得到在C表中的匹配数据
如:a表数据如下
id 姓名 身份证号码 出生日期
1 aa 610411195011220556 1950-11-22
2 aa 610411195010220557 1950-10-22
3 bb 610411195011230558 1950-11-23 b表数据如下
id 姓名 身份证号码 出生日期
1 aa 610411196011220559 1960-11-22
2 bb 610411194010220555 1940-10-22
3 bb 610411197011230552 1970-11-23 c表数据如下
id 身份证号码
1 610411196011220559
2 610411194010220555
3 610411197011230552通过联合查询A表和B表中的姓名bb,期望得到查询结果:
bb 610411194010220555 1940-10-22
bb 610411197011230552 1970-11-23
如:a表数据如下
id 姓名 身份证号码 出生日期
1 aa 610411195011220556 1950-11-22
2 aa 610411195010220557 1950-10-22
3 bb 610411195011230558 1950-11-23 b表数据如下
id 姓名 身份证号码 出生日期
1 aa 610411196011220559 1960-11-22
2 bb 610411194010220555 1940-10-22
3 bb 610411197011230552 1970-11-23 c表数据如下
id 身份证号码
1 610411196011220559
2 610411194010220555
3 610411197011230552通过联合查询A表和B表中的姓名bb,期望得到查询结果:
bb 610411194010220555 1940-10-22
bb 610411197011230552 1970-11-23
-- Author :fredrickhu(小F,向高手学习)
-- Date :2010-06-01 21:22:40
-- Version:
-- Microsoft SQL Server 2005 - 9.00.4035.00 (Intel X86)
-- Nov 24 2008 13:01:59
-- Copyright (c) 1988-2005 Microsoft Corporation
-- Developer Edition on Windows NT 5.1 (Build 2600: Service Pack 3)
--
----------------------------------------------------------------
--> 测试数据:[a]
if object_id('[a]') is not null drop table [a]
go
create table [a]([id] int,[姓名] varchar(2),[身份证号码] bigint,[出生日期] datetime)
insert [a]
select 1,'aa',610411195011220556,'1950-11-22' union all
select 2,'aa',610411195010220557,'1950-10-22' union all
select 3,'bb',610411195011230558,'1950-11-23'
--> 测试数据:[b]
if object_id('[b]') is not null drop table [b]
go
create table [b]([id] int,[姓名] varchar(2),[身份证号码] bigint,[出生日期] datetime)
insert [b]
select 1,'aa',610411196011220559,'1960-11-22' union all
select 2,'bb',610411194010220555,'1940-10-22' union all
select 3,'bb',610411197011230552,'1970-11-23'
--> 测试数据:[c]
if object_id('[c]') is not null drop table [c]
go
create table [c]([id] int,[身份证号码] bigint)
insert [c]
select 1,610411196011220559 union all
select 2,610411194010220555 union all
select 3,610411197011230552
--------------开始查询--------------------------
select
姓名,t.身份证号码,出生日期
from
(
select * from a
union all
select * from b
)t
join c on
t.身份证号码=c.身份证号码
where
t.姓名='bb'
----------------结果----------------------------
/* 姓名 身份证号码 出生日期
---- -------------------- -----------------------
bb 610411194010220555 1940-10-22 00:00:00.000
bb 610411197011230552 1970-11-23 00:00:00.000(2 行受影响)
*/