簡體   English   中英

識別別名列字段中一組不同數據的最后一行

[英]Identify the last row of a distinct set of data in the field for an Alias ​Column

我如何識別別名列的字段中一組不同數據的最后一行(以某種方式發出信號,例如使用“1”)。

對於這個例子,我需要知道,當訂購的GROUP "CARS, COLORS, DRINKS, FRUITS" 結束時。

檢查我在這張圖片上的預期結果:

在此處輸入圖像描述

我的基本查詢:

SELECT * FROM `MY_DB` ORDER BY `ITEM`, `GROUP` ASC

首先: SQL 表的行是無序的。 行沒有固有的順序。 為了使您的問題有意義,您需要一列來定義每個組中行的順序-我假設為id

然后:在 MySQL 8.0 中,一個選項使用 window 功能:

select t.*,
    (row_number() over(partition by grp order by id desc) = 1) as last_group_flag
from mytable t

在早期版本中,您可以使用子查詢:

select t.*,
    (id = (select max(t1.id) from mytable t1 where t1.grp = t.grp)) as last_group_flag
from mytable t

注意: group是語言關鍵字,因此不是列名的好選擇。 我在查詢中使用了grp

您需要按item列排序並按group column排序以查找每個不同group列的最后一條記錄。

使用row_number如下:

select t.*,
       Case when row_number() over(partition by group
                                   order by item desc) = 1 
            then 1 else 0 end as last_group_flag
from your_table t

暫無
暫無

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

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