IF EXISTS(SELECT * FROM MyTable WITH (NOLOCK) WHERE MyTable.RecordId <> @RecordId AND MyTable.UniqueColumn = @UniqueValue)
BEGIN
SELECT 1
END
ELSE
BEGIN
SELECT 0
END
注意:我使用NOLOCK,因此它检查挂起的插入和更新(即有人更新/更改UniqueColumn)
注意:我使用&#34; IF EXISTS(&#34;所以它在找到第一场比赛后停止搜索
注意:我使用&#34; MyTable.RecordId&lt;&gt; @的recordId&#34;所以它不会发现自己是一个匹配。
注意:如果插入recordId将为负1或零。
答案 0 :(得分:1)
不知道它是否“更好”,但更重要的是:
select
case
when
exists ( select * from ... where ... )
then 1
else 0
end as IsThereOrNot
...并且可以与其他表达式一起使用(如果你需要它们)。
注意:select *适用于存在性检查,而nolock不会改变任何东西 - 对于select的范围存在隐式事务。
如果您为列命名,我认为它更好(消费者更容易使用结果)(示例中为IsThereOrNot)