SELECT Id FROM Client_V
        WHERE City = @City
            AND Unit = @Unit
            AND Name = @Name
返回 Id ,若不存在则返回没有结果的空表,但我希望返回 -1 。

解决方案 »

  1.   


    declare @id nvarchar(50)
    select @id=ID from  Client_V
            WHERE City = @City
                AND Unit = @Unit
                AND Name = @Nameif(@id is null)
    begin
    select -1
    end
    else
    begin
    select @id
    end
      

  2.   

            SELECT isnull(Id,-1) FROM Client_V
            WHERE City = @City
                AND Unit = @Unit
                AND Name = @Name
      

  3.   

    if exists (SELECT Id FROM Client_V WHERE City = @City
                AND Unit = @Unit AND Name = @Name)
    SELECT Id FROM Client_V WHERE City = @City
                AND Unit = @Unit AND Name = @Name
    else 
    select -1
    --或者
    select distinct id=(case when exists(SELECT Id FROM Client_V WHERE City = @City
                AND Unit = @Unit AND Name = @Name) then Id else -1 end)
    from Client_V WHERE City = @City    AND Unit = @Unit AND Name = @Name
      

  4.   

    哥啊,不存在的时候不会产生为null的记录
      

  5.   


    是吗!几天不来,生疏了!
    create table tb(id int identity(1,1),class int,num int)
    insert into tb select 1,2 union all select 1,5 union all select 1,5 union all select 1,5
    go
    select id from tb where id=7
    union all
    select top 1 -1 from tb where not exists(select 1 from tb where id=7) --子查询条件与前一主查询条件一样
    /*
    id
    -----------
    -1(1 行受影响)*/
    go
    drop table tb
      

  6.   

    谢谢诸位,不过我最后是这样写的
    SELECT ifnull(
        (
    SELECT Id FROM Client_V
    WHERE City = @City
        AND Unit = @Unit
        AND Name = @Name
        ),
        -1
    );