簡體   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