2012-07-30 99 views
2
SELECT COUNT(organization.ID) 
FROM organization 
WHERE name in (SELECT name FROM organization GROUP BY name HAVING count(name) >1) 
AND organization.APPROVED=0 
AND organization.CREATED_AT>'2010-07-30 10:30:21' 

我试图找到重复项,但此查询需要很长时间大概5-6秒。有没有另一种方法,我可以找到重复,而不使用我的方法?谢谢。查找重复名称sql

子查询:0.28秒。一切都是5.98秒。

+1

我你独自执行子查询,确实需要很长的时间呢? 'SELECT name FROM organization GROUP BY name HAVING count(name)> 1' – bpgergo 2012-07-30 14:24:53

+0

好吧,我会尽力谢谢。 – Marin 2012-07-30 14:25:21

回答

1
SELECT organization.name, COUNT(organization.ID) 
    FROM organization 
WHERE organization.APPROVED=0 
    AND organization.CREATED_AT>'2010-07-30 10:30:21' 
GROUP BY name 
HAVING count(organization.id) > 1; 
+0

所有的工作,我选择了一个帽子:) – Marin 2012-07-30 14:47:12

0

没有必要使用查询WHERE子句。您可以使用GROUP BYHAVING条款来实现:

SELECT COUNT(o.ID) 
FROM organization o 
WHERE o.APPROVED=0 
    AND o.CREATED_AT>'2010-07-30 10:30:21' 
GROUP BY o.Name 
HAVING COUNT(o.name) > 1 
0

为什么不只是不喜欢它:

SELECT COUNT(organization.ID) 
FROM organization 
WHERE organization.APPROVED=0 
AND organization.CREATED_AT>'2010-07-30 10:30:21' 
GROUP BY organization.name 
HAVING count(organization.name) > 1;