需要SQL select语句帮助
ClientId BenefitType
1000 1
1001 1
1001 2
1003 2
1003 3
1004 1
1004 3
我想只选择那些拥有BenefitType = 1
但没有其他BenefitType
的ClientsIds,因为ClientId
不是此表中的唯一ID,并且可以有多行。所以在上面的例子中,答案应该是1000。
有四种不同类型的好处。客户可以拥有它们的任意组合。我试图只选择那些只有一个特定类型的好处的客户。假设福利类型为1,2,3,4。我想选择BenefitType=2
没有任何其他好处的客户,即1
,3
,4
。
我正在使用Oracle,该表有大约600万条记录。有人可以帮我这个吗?
答案 0 :(得分:1)
在澄清您的问题后,请按照以下步骤操作:
select *
from tableA
where BenefitType = 1
and ClientId not in (select ClientId
from tableA
where BenefitType != 1)
输出:
ClientId | BenefitType
1000 | 1
您可以在此处查看:http://sqlfiddle.com/#!4/b4657/2
答案 1 :(得分:0)
在MySQL中
SELECT ClientId
FROM tablename
WHERE BenefitType = 1
LIMIT 1;
在Oracle中
SELECT ClientId
FROM tablename
WHERE BenefitType = 1
AND ROWNUM = 1;
此外,添加以下行以获取最小ID
ORDER BY ClientId ASC;