我想验证客户表中的唯一记录并编写以下查询
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没有引入子查询时,只能在选择列表中指定一个表达式。
答案 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;