【问题标题】:SQL Query, Where Not Exist doesn't work [closed]SQL查询,不存在的地方不起作用[关闭]
【发布时间】:2012-02-14 14:36:22
【问题描述】:

我写了下面的查询来查看一行是否存在,如果行不存在则更新,否则什么都不做。

我的代码:s

UPDATE [Computer] SET [ComputerTag] = @ComputerTag, [CustID] = @CustID, 
[PcModel] = @PcModel, [ServicetagNo] = @ServicetagNo,                            
WHERE [ComputerID] = @ComputerID
AND NOT EXIST ( SELECT [ComputerTag] FROM [Computer] 
WHERE [ComputerTag] = @ComputerTag)

但它显示错误“函数参数列表中的错误:'SELECT' 无法识别。 函数参数列表中的错误:“不存在”无法识别”。我该如何解决这个问题?

更新:

感谢您的回答,但现在它显示不同类型的错误“不支持复合语句 SQL 构造或语句”。这是为什么呢?

【问题讨论】:

    标签: c# asp.net .net sql sql-server


    【解决方案1】:

    @ServicetagNo 之后的查询中有一个额外的逗号。

    【讨论】:

      【解决方案2】:
      1. 第一个 WHERE 之前行尾的额外逗号
      2. 在 NOT EXISTS (@Lamak) 上错过了“S”

      应该是这样的:

      UPDATE [Computer] SET [ComputerTag] = @ComputerTag, [CustID] = @CustID, 
      [PcModel] = @PcModel, [ServicetagNo] = @ServicetagNo                       
      WHERE [ComputerID] = @ComputerID
      AND NOT EXISTS ( SELECT [ComputerTag] FROM [Computer] 
      WHERE [ComputerTag] = @ComputerTag)
      

      【讨论】:

      • +1 - 但它在EXIST...AND NOT EXISTS 上缺少一个“s”
      【解决方案3】:

      试试这个:

      UPDATE [Computer] SET [ComputerTag] = @ComputerTag, [CustID] = @CustID, 
      [PcModel] = @PcModel, [ServicetagNo] = @ServicetagNo                       
      WHERE [ComputerID] = @ComputerID
      AND NOT EXISTS ( SELECT [ComputerTag] FROM [Computer] 
      WHERE [ComputerTag] = @ComputerTag)
      

      【讨论】:

        【解决方案4】:

        EXISTS 关键字中缺少“S”。

        【讨论】:

          【解决方案5】:

          除了额外的逗号之外,您应该在 WHERE 子句中将 EXIST 替换为 EXISTS

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 1970-01-01
            • 2013-09-25
            • 2020-11-28
            • 1970-01-01
            • 2015-07-26
            • 1970-01-01
            • 1970-01-01
            • 2020-09-12
            相关资源
            最近更新 更多