2010-12-15 119 views
1

我對MS SQL非常陌生,並且試圖在表中獲取所有重複的電子郵件。我發現了一個適用於MySQL的類似查詢,但是當它在MS SQL中運行時,我得到錯誤的無效列名稱'ct'。簡單的MS SQL錯誤

我運行的查詢是:

SELECT 
    [ShipEmail], 
    COUNT(*) as ct 

FROM [ShipWorksDefault].[dbo].[Customers] GROUP BY [ShipEmail] HAVING [ct] > 1 

我猜有些事情很簡單,我俯瞰。

非常感謝提前!

回答

9

只要改變HAVING子句不使用列別名:

HAVING COUNT(*)> 1

0
SELECT 
    [ShipEmail], 
    COUNT(*) as ct 
FROM [ShipWorksDefault].[dbo].[Customers] 
GROUP BY [ShipEmail] HAVING COUNT(*) > 1 

SELECT 
    [ShipEmail], 
    COUNT(*) as ct 
FROM [ShipWorksDefault].[dbo].[Customers] 
GROUP BY [ShipEmail] HAVING COUNT([ShipEmail]) > 1 
+0

您的意思是計數(*)> 1?此外,我嘗試了第二個版本,並得到不同數量的記錄返回比有計數(*)> 1版本 – HLGEM 2010-12-15 20:06:20

1

不能使用的別名有條款。請嘗試:

SELECT 
    [ShipEmail], 
    COUNT(*) as ct 

FROM [ShipWorksDefault].[dbo].[Customers] GROUP BY [ShipEmail] HAVING COUNT(*) > 1