如果行不存在,是否有更好的方法返回0?

时间:2015-10-08 15:52:32

标签: sql-server performance sql-server-2008

所以我的目标是选择John的id并将其返回给调用应用程序。如果John不存在,我想将0返回给应用程序。这样做的正确方法是什么?

...
myHelper : function(){
  return MyCollection.findOne({ userId: Meteor.userId() }).personalizeTemplate; 
}
...

3 个答案:

答案 0 :(得分:2)

假设John只有一个ID:

declare @ID int = 0
select @ID = ID From Table WHERE Name = 'John'
select @ID

答案 1 :(得分:1)

如果使用Sql server,可以使用:

SELECT ISNULL((SELECT ID From Table WHERE Name = 'John' ), 0)

对于Oracle,等效方法是NVL(field,default_value); (未经测试)

答案 2 :(得分:1)

即使Table有多行Name = 'John'

,此解决方案仍然有效
SELECT ISNULL([Table].ID, ZeroID.ID) ID
FROM (SELECT 0 ID) ZeroID
    LEFT JOIN [Table] ON [Table].Name = 'John'