表ABC表ABC表AEF是一对多的关系
A B C
a1 b1 c1
a2 b2 c2
a3 b3 c3
表AEF
A E F
a1 e1 f1
a1 e1 f1
a2 e2 f2
a3 e3 f3
a3 e1 f3
a4 e1 f4
我想得到
在表AEF中E字段全部都是等于e1的A
如果查询上面数据就应该是得出a1和a4
------解决方案--------------------
如果查询上面数据就应该是得出a1和a3,a4?????????????????????
------解决方案--------------------
建表语句:
create table 表ABC(A varchar(10), B varchar(10),C varchar(10))
insert into 表ABC
select 'a1', 'b1', 'c1' union all
select 'a2', 'b2', 'c2' union all
select 'a3', 'b3', 'c3'
create table 表AEF(A varchar(10), E varchar(10), F varchar(10))
insert into 表AEF
select 'a1', 'e1', 'f1' union all
select 'a1', 'e1', 'f1' union all
select 'a2', 'e2', 'f2' union all
select 'a3', 'e3', 'f3' union all
select 'a3', 'e1', 'f3' union all
select 'a4', 'e1', 'f4'
查询语句:
select A
from 表AEF
group by A
having COUNT(case when E = 'e1' then 1 else null end) = COUNT(*)
/*
A
a1
a4
*/
------解决方案--------------------
恕本人愚笨,没看出你第一个表有任何存在价值

----------------------------------------------------------------
-- Author :DBA_Huangzj(發糞塗牆)
-- Date :2013-12-11 08:10:16
-- Version:
-- Microsoft SQL Server 2012 (SP1) - 11.0.3128.0 (X64)
-- Dec 28 2012 20:23:12
-- Copyright (c) Microsoft Corporation
-- Enterprise Edition (64-bit) on Windows NT 6.2 <X64> (Build 9200: )
--
----------------------------------------------------------------
--> 测试数据:[AEF]
if object_id('[AEF]') is not null drop table [AEF]
go
create table [AEF]([A] varchar(2),[E] varchar(2),[F] varchar(2))
insert [AEF]
select 'a1','e1','f1' union all
select 'a1','e1','f1' union all
select 'a2','e2','f2' union all
select 'a3','e3','f3' union all
select 'a3','e1','f3' union all
select 'a4','e1','f4'
--------------开始查询--------------------------
select DISTINCT * from [AEF] a WHERE EXISTS (SELECT 1 FROM [AEF] b WHERE a.a=b.a AND b.e='e1')
AND NOT EXISTS (SELECT 1 FROM [AEF] b WHERE a.a=b.a AND b.e<>'e1')
----------------结果----------------------------
/*
A E F
---- ---- ----
a1 e1 f1
a4 e1 f4
*/