1个查询中的多个条件

时间:2010-01-13 14:48:15

标签: mysql

我有一张人名的表格,我还有另一张这些人做过的承诺表。

他们可能会对第1,2,3或4项承诺提款。

每次作出质押时,都会在质押表中填写一份条目,其中包含该人的身份证和他们所做的质押号。

我想要一个查询,其中包含了对1和2作出承诺的不同人数。

如何实现这一目标?

1 个答案:

答案 0 :(得分:1)

您可以使用EXISTS

尝试此操作
SELECT     COUNT(DISTINCT PersonID) DistinctCountPersons
FROM       pledges p
WHERE     EXISTS(SELECT * FROM pledges WHERE PersonID = p.PersonID AND ItemID = 1)
AND     EXISTS(SELECT * FROM pledges WHERE PersonID = p.PersonID AND ItemID = 2)

修改

关于查询的第二部分,您可以尝试

SELECT  p.PersonID,
        pp.PersonName,
        SUM(p.Pledge) TotalPledged
FROM    pledges p INNER JOIN
        people pp ON p.PersonID = pp.PersonID
WHERE   EXISTS(SELECT * FROM pledges WHERE PersonID = p.PersonID AND ItemID = 1)
AND     EXISTS(SELECT * FROM pledges WHERE PersonID = p.PersonID AND ItemID = 2)
GROUP BY p.PersonID,pp.PersonName