假設我的查詢:
select modified_date, name from table1 where name in (select name from table2 group by name) as a order by name
回傳這個結果:

我需要更改我的查詢以獲得結果grouped by Name,但ordered by modified_date desc 對于每個組的第一個元素。
意味著結果應該是:

uj5u.com熱心網友回復:
首先,您的子查詢不需要GROUP BY子句,因為您沒有進行任何聚合。
它可能是:
SELECT DISTINCT name FROM table2
但它很簡單:
SELECT name FROM table2
對于您的排序問題,如果modified_date的資料型別是DATE您可以使用MAX()視窗函式:
SELECT modified_date, name
FROM table1
WHERE name IN (SELECT name FROM table2)
ORDER BY MAX(modified_date) OVER (PARTITION BY name) DESC,
name, -- just in case 2 names have the same max modified_date
modified_date DESC;
請參閱演示。
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/486185.html
標籤:sql PostgreSQL sql-order-by 窗函数 sql-in
上一篇:下單后只選擇1行
下一篇:為什么在SQLite中,`SELECT(SELECT1UNIONSELECT2UNIONSELECT3)INTERSECTSELECT3UNIONSELECT4`等于4而不是3?
