2012-02-17 238 views
0

我有一个表(A)它具有列caseid和citin, caseid可以具有相同的citin, 我想查询哪里我想要特定的citin有2个或更多caseid
我试图SQL查询单表,比较表列值

select a.caseid from A as a 
where citin in (select citin, caseid from A as c where c.caseid != a.caseid) 

有人能帮忙吗?

回答

3
select a.citin, count(a.caseid) 
from A a 
group by a.citin 
having count(a.caseid) > 1 
+1

我不知道为什么我们需要有“作为”第二,当我们不打算使用同一个表两次..和我收到错误行“sql查询没有正确结束” – 2012-02-17 09:57:12

+0

在这种情况下使用别名不会获得任何目标。但是有时候使用别名是很方便的(例如,在某些SQL编辑器中键入时自动完成)。查询是固定的(很明显“因为”在这里是不需要的)。 – triclosan 2012-02-17 10:00:34

+0

是的,我删除了一个,并使用它工作得很好.. :) – 2012-02-17 10:09:16

1
SELECT a.citin, COUNT(DISTINCT a.caseid) 
FROM A a 
GROUP BY a.citin 
HAVING COUNT(DISTINCT a.caseid) >= 2 
+0

thanq的帮助 – 2012-02-17 10:10:30

3
select a.citin , count(a.caseid) from A a group by a.citin 
having count(a.caseid) >= 2; 
+0

+1是正确的答案 – 2012-02-17 10:03:49

+0

thanq的帮助 – 2012-02-17 10:10:17