SQL中怎么将符合子表中多个字段值作为查询主表的条件
SQL中如何将符合子表中多个字段值作为查询主表的条件
主表TEST1:
ID BH XC SL
1 1622 1 100
2 1622 2 300
3 1700 1 100
4 1622 3 150
5 1700 2 200
6 1800 1 100
7 1700 5 100
子表TEST2:
ID BH XC
1 1622 1
2 1800 1
3 1700 2
最终查询结果要求:
ID BH XC SL
1 1622 1 100
6 1800 1 100
5 1700 2 200
结果是要以TEST2子表中的BH和XC字段为查询条件,在TEST1中查询出TEST2的同一BH和XC字段的数据.语名要如何写?
------解决方案--------------------
为保证数据顺序和你的一直,换个排序字段
主表TEST1:
ID BH XC SL
1 1622 1 100
2 1622 2 300
3 1700 1 100
4 1622 3 150
5 1700 2 200
6 1800 1 100
7 1700 5 100
子表TEST2:
ID BH XC
1 1622 1
2 1800 1
3 1700 2
最终查询结果要求:
ID BH XC SL
1 1622 1 100
6 1800 1 100
5 1700 2 200
结果是要以TEST2子表中的BH和XC字段为查询条件,在TEST1中查询出TEST2的同一BH和XC字段的数据.语名要如何写?
------解决方案--------------------
为保证数据顺序和你的一直,换个排序字段
----------------------------------------------------------------
-- Author :DBA_HuangZJ(发粪涂墙)
-- Date :2014-03-04 08:34:45
-- Version:
-- Microsoft SQL Server 2008 R2 (RTM) - 10.50.1600.1 (X64)
-- Apr 2 2010 15:48:46
-- Copyright (c) Microsoft Corporation
-- Enterprise Edition (64-bit) on Windows NT 6.2 <X64> (Build 9200: ) (Hypervisor)
--
----------------------------------------------------------------
--> 测试数据[TEST1]
if object_id('[TEST1]') is not null drop table [TEST1]
go
create table [TEST1]([ID] int,[BH] int,[XC] int,[SL] int)
insert [TEST1]
select 1,1622,1,100 union all
select 2,1622,2,300 union all
select 3,1700,1,100 union all
select 4,1622,3,150 union all
select 5,1700,2,200 union all
select 6,1800,1,100 union all
select 7,1700,5,100
--> 测试数据[TEST2]
if object_id('[TEST2]') is not null drop table [TEST2]
go
create table [TEST2]([ID] int,[BH] int,[XC] int)
insert [TEST2]
select 1,1622,1 union all
select 2,1800,1 union all
select 3,1700,2
--------------生成数据--------------------------
select a.*
from [TEST1] a INNER JOIN [TEST2] b ON a.BH=b.BH AND a.XC=b.XC
ORDER BY a.xc
----------------结果----------------------------
/*
ID BH XC SL
----------- ----------- ----------- -----------
1 1622 1 100
6 1800 1 100
5 1700 2 200
*/