簡體   English   中英

如何依次獲取每種類型的第一條記錄?

[英]How to get the first record of each type in sequence?

表數據:

ID 類型
1 一個
2 一個
3
4 一個
5 一個
6
7
8 一個
9 一個
10 一個

如何僅獲取 ID 1,3,4,6,8的行,或通過單個查詢獲取類型更改的第一條記錄?

我們在代碼中使用多個查詢和廣泛的處理來執行此操作,尤其是對於大數據,有沒有辦法在單個查詢中執行此操作?

使用LAG() window function 為每一行獲取前一行的type並將其與當前type進行比較。
如果 2 個type不同,則創建一個為true的標志列,並使用它來過濾表:

WITH cte AS (
  SELECT *, type <> LAG(type, 1, '') OVER (ORDER BY id) flag
  FROM tablename
)
SELECT * FROM cte WHERE flag;

我假設列type不包含空值( null或空字符串)。

請參閱演示。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM