2010-12-15 97 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