SQL Server 如果存在则 1 否则 2

新手上路,请多包涵

使用 Sql Server 2012。我有一个存储过程,其中一部分检查用户名是否在表中。如果是,则返回 1,如果不是,则返回 2。这是我的代码:

 IF EXISTS (SELECT * FROM tblGLUserAccess WHERE GLUserName ='xxxxxxxx') 1 else 2

但是,我不断收到以下错误:

‘1’ 附近的语法不正确。

如果存在,这甚至可能吗?

问候,

迈克尔

原文由 Michael 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 784
2 个回答

如果你想这样做,那么这就是你所追求的语法;

 IF EXISTS (SELECT * FROM tblGLUserAccess WHERE GLUserName ='xxxxxxxx')
BEGIN
   SELECT 1
END
ELSE
BEGIN
    SELECT 2
END

您并不严格需要 BEGIN..END 语句,但最好从一开始就养成这种习惯。

原文由 Rich Benner 发布,翻译遵循 CC BY-SA 4.0 许可协议

最好的做法是始终拥有 TOP 1 1

如果我使用 SELECT 1 -> 如果条件匹配多个记录,那么您的查询将获取所有列记录并返回 1。

如果我使用 SELECT TOP 1 1 -> 如果条件也匹配多个记录,它将只获取任何行的存在(具有自 1 值列)并返回 1。

 IF EXISTS (SELECT TOP 1 1 FROM tblGLUserAccess WHERE GLUserName ='xxxxxxxx')
BEGIN
   SELECT 1
END
ELSE
BEGIN
    SELECT 2
END

原文由 Lakshmanan Dhamotharan 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进