簡體   English   中英

如何使用 group by 和 Order by DESC 獲取表中的最后一行?

[英]How to get the last row in the table using group by with Order by DESC?

我有兩個表,表一個名稱( tbl_brands )與這些列:

在此處輸入圖像描述

和第二個表名( tbl_loader_attachment )與這些列:

在此處輸入圖像描述

我使用下面的 MySQL 代碼按 DESC 排序:

SELECT tbl_loader_attachment.*, tbl_brands.*  FROM tbl_loader_attachment
INNER JOIN tbl_brands ON(tbl_brands.b_id=tbl_loader_attachment.b_id)
GROUP BY tbl_loader_attachment.b_id ORDER BY tbl_loader_attachment.la_id DESC

當我執行我的代碼 select 第一行出現(test1)我想 select 最后一行出現(test4)

一種方法使用GROUP BY查詢:

SELECT tla1.*, tb.*
FROM tbl_brands tb
INNER JOIN tbl_loader_attachment tla1
    ON tb.b_id = tla1.b_id
INNER JOIN
(
    SELECT b_id, MAX(la_id) AS max_la_id
    FROM tbl_loader_attachment
    GROUP BY b_id
) tla2
    ON tla1.b_id = tla2.b_id AND
       tla1.la_id = tla2.max_la_id;

如果您使用的是 MySQL 8+(或者該問題的未來讀者應該使用 MySQL 8+),那么這里的另一個選項是使用ROW_NUMBER

WITH cte AS (
    SELECT *, ROW_NUMBER() OVER (PARTITION BY b_id ORDER BY la_id DESC) rn
    FROM tbl_loader_attachment
)

SELECT tla.*, tb.*
FROM tbl_brands tb
INNER JOIN cte tla ON tb.b_id = tla.b_id
WHERE tla.rn = 1;

暫無
暫無

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

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