代码之家  ›  专栏  ›  技术社区  ›  Geeth

如何将不同的选择值存储到同一个变量中

  •  0
  • Geeth  · 技术社区  · 15 年前

    是否可以将不同的选择值存储到同一个变量?

    DECLARE @cout int 
    
    SELECT @cout= count(*) FROM Master1 WHERE (...)
    
    SET @cout = SELECT count(*) FROM Master2 WHERE (...)
    
    SET @cout = SELECT count(*) FROM Master3 WHERE (...)
    
    IF(@cout = 0)
     BEGIN
     END
    
    3 回复  |  直到 15 年前
        1
  •  0
  •   Rob Farley    15 年前

    怎么样:

    IF EXISTS
    (
    SELECT 1 FROM Master1 WHERE (...)
    UNION ALL
    SELECT 1 FROM Master2 WHERE (...)
    UNION ALL
    SELECT 1 FROM Master3 WHERE (...)
    )    
    BEGIN
    ...
    END
    

    它应该会起作用,并且足够快地拔出…

        2
  •  0
  •   Noon Silk    15 年前

    不,您在那里得到的将替换该值。但是,您可以将它们附加为字符串,或者将数字相加。但这是不好的做法;最好返回结果集,即:

    SELECT
        (select count(*) FROM Master1 WHERE (...)) as 'Foo1',
        (SELECT count(*) FROM Master2 WHERE (...)) as 'Foo2',
        (select count(*) FROM Master3 WHERE (...)) as 'Foo3'
    
        3
  •  0
  •   Hogan    15 年前

    您只想在这些都不存在的情况下运行。

    您可以使用exists关键字。

    像这样。

    IF NOT EXISTS SELECT ID FROM Master1 WHERE (...)
      IF NOT EXISTS SELECT ID FROM Master2 WHERE (...)
        IF NOT EXISTS SELECT ID FROM Master3 WHERE (...)
        BEGIN
          ..do stuff...
        END
    

    请注意,我不使用count,如果count为零,则不存在为真。选择任意列以运行查询。

    现在无法测试,语法可能如下所示:

    IF NOT EXISTS (SELECT ID FROM Master1 WHERE (...))
      IF NOT EXISTS (SELECT ID FROM Master2 WHERE (...))
        IF NOT EXISTS (SELECT ID FROM Master3 WHERE (...))
        BEGIN
          ..do stuff...
        END