2010-09-27 110 views
0

我想写以下(伪)SQL中的MS Access声明:如何使用复合键与IN关键字在MS Access

Select C 
from MyTable 
where (A, B) IN (select distinct A,B from MyTable); 

我试过了,但得到的抱怨:“你已经写了子查询可以在不使用主查询的FROM子句中的EXISTS保留字的情况下返回多个字段。“

我很欣赏任何反馈。

+1

您的查询看起来像您想要做的:'SELECT A,B,C FROM MyTable',您能否提供您的实际查询。 – RobertPitt 2010-09-27 16:41:04

+1

我不认为你可以像这样使用一个元组来进行'in'的操作,而罗伯特有一个好的观点:无论如何,这将会返回你表中的所有Cs。 – Rup 2010-09-27 16:48:05

+1

您可能需要包含一些示例数据以及实际代码。即使这个元组工作,“在(选择不同的A,B)中的Where(A,B)”似乎会匹配每条记录。不知道你在做什么。 – Bill 2010-09-27 17:24:37

回答

0

您可以使用一个内连接作为一个过滤器:

select c 
from MyTable t1 
inner join 
     (
     select distinct 
       a 
     ,  b 
     from OtherTable 
     ) t2 
on  t1.a = t2.a 
     and t1.b = t2.b 

(我假设你有两个表,因为查询不为一个表太大的意义很明显,所有的组合。 B表1中的“也”将在表1中。)