2011-02-10 72 views
1

我试图做一些看似简单的事情。选择ID,其中表行数= 1

我想从一个表的人返回列值(ID),其中中行人士计数= 1

因此,像:

SELECT Person.Id 
FROM (select Count(*) from Person Having Count(*)=1); 

但它不工作。任何非常感谢。

+0

你能改写选择Person.Id 从一个人 组由Person.Id ,作为一个要求或更高级别的问题:你的英文解释基本上是用SQL来说的。你似乎在说你想选择一个人的身份,只有一个人?如果有两个呢?这没什么意义,所以更多的背景将帮助我们回答这个问题。 – 2011-02-10 16:16:03

+0

值得一提的是,大多数答案都假设你的人员表可能有相同的ID重复 - 这显然是不好的。我希望那不是你问的问题? – 2011-02-10 16:17:41

回答

0
select person.id from person where ((select count(*) from person) = 1) 

你会得到NULL,如果表是空的,或有超过一排。

0

您是否在寻找重复的ID?

SELECT ID FROM Person p1 WHERE (SELECT COUNT(*) FROM Person p2 WHERE p1.ID = p2.ID) > 1 
1

简单:

select id from (
    select p.id, count(1) cnt 
    from Person p 
    group by p.id 
) 
where cnt = 1 

功课? )

0

尝试这种情况:

具有COUNT(*)= 1