我有一个表,它是外部 id 和本地 id 之间的映射。
我必须编写一个查询来确定该表是否为双射。我想出了这个
IF 1 <> ANY(
SELECT COUNT(foreignId)
FROM mappingTable
GROUP BY localId
)
BEGIN
SELECT 'Oh noes!'
END
ELSE BEGIN
SELECT 'Everything is fine.'
END
我的主管看了一眼,做了个鬼脸,告诉我我应该写这个:
IF EXISTS(
SELECT NULL
FROM mappingTable
GROUP BY localId
HAVING COUNT(foreignId) <> 1
)
BEGIN
SELECT 'Oh noes!'
END
ELSE BEGIN
SELECT 'Everything is fine.'
END
我的问题只是这些查询中哪一个更好。我很确定它们是等价的。