代码之家  ›  专栏  ›  技术社区  ›  Dustin Laine

SQL视图条件选择

  •  0
  • Dustin Laine  · 技术社区  · 14 年前

    我正试图创建一个视图来提取一个特定的记录。我遇到的问题是,有两个记录可供选择,一个状态标志为1或2。如果存在,它应该拉1记录,如果不存在,则拉2记录。

    从一个角度看这是可能的吗?

    4 回复  |  直到 14 年前
        1
  •  3
  •   Beth    14 年前

    尝试按状态值排序,或分组并返回最小值

        2
  •  0
  •   Faiz    14 年前
    Select B.*
    FROM
        (Select 
           ID
           ,MIN(Flag) Flag
        From TableName
        Group by ID) A
        LEFT JOIN TableName B on A.ID=B.ID and A.Flag=B.Flag
    
        3
  •  0
  •   Fosco    14 年前

    select top 1 并按状态标志排序。

        4
  •  0
  •   Jeff Siver    14 年前
    select * from table
    where Status = 1
    
    union
    
    select * from table t
    where status = 2 
        and not exists (select * from table t2 where t.id = t2.id and Status = 1)
    

    请注意,当您有一个ID列要与之比较时,这种方法最有效。这是费兹写的另一种风格。