MySQL忽略具有多次出现的列的查询结果

时间:2013-07-24 14:35:22

标签: mysql

我正在尝试计算数据库中行数为50且名称只显示一次的行数。这是我确信我会得到的查询

SELECT name,
       gross
FROM   daysheet
WHERE  gross = '50'
GROUP  BY name
HAVING Count(name) = 1  

然而,这似乎并没有像我想象的那样发挥作用。

GROSS      NAME
 50      Person 1
 50      Person 2
 705     Person 2

以上是该表的示例。我希望我的查询返回1行,因为50出现1次名称完全唯一,但上面的查询返回2

我也尝试过使用DISTINCT,但它总是返回2。

我哪里出错?

谢谢!

澄清:我正在尝试检索总数为50的行数,并且该名称仅在数据库中出现一次。所以Person 2会被忽略,因为它出现两次,而num行应该是1,因为只有1次是总数50而且名字只出现一次

3 个答案:

答案 0 :(得分:1)

试试这个......

select name, gross
from   daysheet d1
where  gross = 50
and    1 in (select count(name)
             from daysheet d2
             where d2.name = d1.name)

http://sqlfiddle.com/#!2/be634/1

答案 1 :(得分:0)

SELECT name,
       gross
FROM   daysheet
GROUP  BY name, gross
HAVING Count(name) = 1

应该没问题

答案 2 :(得分:0)

这对你有用。

SELECT name, gross FROM daysheet WHERE gross='50' and name in 
(SELECT name FROM daysheet GROUP BY name HAVING count(name)=1)