SQL 查看条件选择

Posted

技术标签:

【中文标题】SQL 查看条件选择【英文标题】:SQL View Conditional Selection 【发布时间】:2010-08-12 17:54:05 【问题描述】:

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

从一个角度来看这可能吗?

【问题讨论】:

可以提供表的schema吗? 【参考方案1】:

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

【讨论】:

【参考方案2】:
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】:

select top 1 并按状态标志对其进行排序。

【讨论】:

添加了标签,但它是 SQL Server 2005。【参考方案4】:
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 列时,这种方法效果最好。这与 Faiz 所写的内容不同。

【讨论】:

以上是关于SQL 查看条件选择的主要内容,如果未能解决你的问题,请参考以下文章

怎么查看查询方法自动生成的SQL语句

选择查询中的 SQL 条件变量

SQL:从选择中排除某些条件

SQL - 我需要制定一个条件来限制选择只显示与这两个条件相对应的行

SQL - 如何选择具有特定条件的行?

SQL 条件选择