繁体   English   中英

SQL查询以检索连接到同一表的数据

[英]SQL Query to retrieve data joining same table

我有一个表和数据如下。 每个记录的ID都是不同的,RECNO是记录号,其状态会发生多种变化,如下表所示。 我需要查询处于错误状态且永远不会进入关闭状态的recno。 从下面的样本数据中,由于记录1和2具有错误状态,但是记录处于关闭状态,因此我应该得到recno 3。

**ID    recno   status**
1   1   Started
2   1   inProgress
3   1   released
4   1   error
5   1   closed
6   2   Started
7   2   inProgress
8   2   released
9   2   error
10  2   error
11  2   Closed
12  3   Started
13  3   inProgress
14  3   released
15  3   error

如果您想要最后的状态,可以执行以下操作:

select t.*
from t
where t.id = (select max(t2.id) from t t2 where t2.recno = t.recno);

如果您想要处于错误状态的那些:

select t.*
from t
where t.id = (select max(t2.id) from t t2 where t2.recno = t.recno) and
      t.status = 'error';

注意:在大多数数据库中,甚至在某些Sybase版本中,也可以对查询使用row_number() 但是,并非所有版本的Sybase都支持窗口功能。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM