SQL问题结合

时间:2011-01-20 21:44:16

标签: sql

假设您有一个包含两个字段的简单表:account和item: 一个帐户可以有多个项目。例如:

Account    Item
11         Apples
11         Pears
11         Crackers
12         Apples
12         Bannanas
12         Cookies
13         Pears
13         Carrots
13         Apples

如何编写查询以便我可以选择具有一些指定项目集的所有帐户。例如,我将如何编写查询,以便选择分配了苹果和梨的字段的帐户(在示例帐户11和13中)。

感谢您的帮助。

埃利奥特

4 个答案:

答案 0 :(得分:12)

您可以构建一个查询,该查询只会在集合中留下苹果和梨,然后按帐户分组并计算不同的项目。如果它与预期的计数匹配(在这种情况下为2),则该帐户具有完整集。

select account
from tbl
where item in ('apples','pears')
group by account
having count(distinct item) = 2

答案 1 :(得分:0)

SELECT DISTINCT account From Table WHERE item in ('Apples','Pears')

答案 2 :(得分:0)

您可以使用自联接一次访问同一个表的两行中的信息:

SELECT ai0.Account
FROM accountitems AS ai0
JOIN accountitems AS ai1 ON ai0.Account=ai1.Account
WHERE ai0.Item='Apples'
AND ai1.Item='Pears'

答案 3 :(得分:0)

你可以使用这样的查询。

SELECT Distinct Account From MyTable WHERE Item = 'Apple' or Item = 'Pears';

此查询将返回所有帐户的列表,其中包含项目为apple或pears。 Distinct确保每个帐户只显示一次。