【问题标题】:SQL. How to check if record exists in Table [closed]SQL。如何检查表中是否存在记录[关闭]
【发布时间】:2018-11-25 04:51:52
【问题描述】:

我在数据库“TestDB”中有一个表“Table1”。表中有 3 列:id、name、description。那么如何检查 Table1 中是否存在记录呢?

【问题讨论】:

  • 请提供示例数据、期望的结果,并解释为什么简单的where 子句不能满足您的要求。
  • 我想在添加前检查数据库中是否有条目
  • 没错!甚至更多的方法来找出答案。发布您的查询或更多描述

标签: sql sql-server tsql exists


【解决方案1】:

在sql server中检查记录是否存在的最佳方法

IF EXISTS (SELECT 1 FROM dbo.Table1 WHERE ID = @ID )
BEGIN
END

这里我们使用 SELECT 1,因为我们不想加载所有列,所以它将用于性能。

【讨论】:

    【解决方案2】:

    您使用表格列,例如检查 Name 或 id 中是否存在记录

    SQL 查询在这里。

    Declare @id int=1
    Declare @name='abc'
    
       IF EXISTS ( SELECT  id, name, description
                        FROM    Table1
                        WHERE   id= @id  or name=@name ) 
                BEGIN                    
                    SET @RetVal = -1          --record  already exist          
                    RETURN                    
                END  
    

    【讨论】:

      【解决方案3】:
      If exists (select * from table1 where Id = 2)
      

      -- 在这里做你的事情。

      【讨论】:

      • 出于性能原因,最好使用“select 1”而不是“select *”和“如果存在”,因为只需要一个实例来确认条件。
      【解决方案4】:

      使用EXISTS?没有进一步的解释,这是我能提供的最好的,但是,如果你真的扩展你的问题,你会得到一个更全面的答案:

      USE Sandbox;
      GO
      
      CREATE TABLE Test (ID int);
      
      SELECT 1 AS HasData
      WHERE EXISTS (SELECT 1 FROM test);
      GO
      
      INSERT INTO Test
      VALUES(NULL); --intentionally NULL to show that even a single row
                    --with the value NULL will cause EXISTS will return True
      
      SELECT 1 AS HasData
      WHERE EXISTS (SELECT 1 FROM test);
      
      GO
      
      DROP TABLE test;
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2018-06-01
        • 1970-01-01
        • 2011-05-14
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多