验证SQL Server 2012中的唯一记录

时间:2016-08-04 14:05:58

标签: sql sql-server count

我想验证客户表中的唯一记录并编写以下查询

declare @NT1 int

set @NT1 = (SELECT LogID, CustomerID, count(1)
FROM dbo.Customer
group by LogID,CustomerID
having count(1) >1)

if @NT1 > 1

print 'Fail'

ELSE  
    PRINT 'Pass';

运行查询时收到以下消息:

  

当EXISTS没有引入子查询时,只能在选择列表中指定一个表达式。

2 个答案:

答案 0 :(得分:2)

如果您想验证(LogId, CustomerId)表中没有多次Customer对出现,那么您可以这样做。

最简单的方法是:

create unique index idxu_customer_logid_customerid on customer(logid, customerid);

这样,数据库可确保唯一性。而且,其余的代码不必担心它。

如果您想运行测试,请使用exists

IF (EXISTS (SELECT LogID, CustomerID, count(1)
            FROM dbo.Customer
            GROUP BY LogID, CustomerID
            HAVING count(1) > 1
           )
   )
BEGIN
    PRINT 'Fail';
END
ELSE 
BEGIN 
    PRINT 'Pass';
END;

答案 1 :(得分:0)

DECLARE @Ncount int

set @Ncount =  (select top 1 
 count(1) 
            FROM dbo.Customer
            GROUP BY LogID, CustomerID
                        HAVING count(1) > 0
           )

SELECT IIF ( @Ncount >= 1, 'Failed', 'Pass' ) AS Result;