我有一个表,它是外来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
我的问题是这些查询中哪些是更好的风格.我很确定它们是等价的.