2012-07-09 53 views
0

我们有一个有VehicleName列的车辆表。我正在研究一个用户拥有相同车辆VehicleName的错误。我有这个查询来帮助返回多次使用VehicleNames:SQL搜索具有相同名称列的条目?

SELECT VehicleName, 
(
    SELECT count(VehicleName) 
    FROM Vehicles as V2 
    WHERE V1.VehicleName = V2.VehicleName 
) 
FROM Vehicles as V1; 

首先,它很慢。这并不算太坏,因为这还没有投入生产;这只是为了帮助修复错误。其次,这将返回每个VehicleName,即使是那些有一个计数的那些,那些是我对这个应用程序不感兴趣的VehicleNames。我不记得如何命名子查询,所以我不能添加where来限制它。

我感兴趣的不仅仅是如何命名子查询,也是他们更快的解决方案呢?

回答

4

你是否试图用一些丑陋的方式做到这一点?

SELECT VehicleName, COUNT(*) as TOTAL 
FROM Vehicles 
GROUP BY VehicleName 
HAVING TOTAL > 1 
ORDER BY TOTAL DESC; 
+0

我怎么能忘记'Group By'?!?它现在几乎立即运行。谢谢。 – 2012-07-09 14:42:23