在Sql Server中我希望能够在我的查询中返回一个结果,如果存在完全匹配,即我只匹配一行,如果没有,我想不返回结果所有
我意识到在sql查询返回后,在代码中处理这个问题相当容易,但我希望能够在Sql Server中进行测试,如果它可以相当容易地实现的话。
答案 0 :(得分:2)
如果我理解正确,如果您只匹配一条且只有一条记录,那么您只想获取数据。
一种方法是使用中间结果集COUNT
或@@ROWCOUNT
您可以将结果放入#TEMP
表或@Table
变量,然后检查该表或@@ROWCOUNT
变量以确定是否有一行。如果这样做,则返回中间结果集。
答案 1 :(得分:1)
如果这是SQL Server 2005或更高版本,您可以使用COUNT() OVER
,如下所示:
WITH matches AS (
SELECT
...,
TotalMatches = COUNT(*) OVER ()
FROM ...
WHERE ...
)
SELECT *
FROM matches
WHERE TotalMatches = 1
;
matches
CTE找到符合主要要求的所有行,并将它们与匹配总数一起返回。仅当满足额外要求(总匹配计数为1)时,主查询才会返回找到的结果。