我有一個帶有 id、name 和warehouseId 的表產品。我想獲取所有產品,但優先考慮給定的warehouseId,即如果有許多產品具有相同的名稱和不同的warehouseId,則只回傳一個指定了warehouseId的產品,并且如果有許多具有相同名稱的產品,不同的warehouseId和沒有一個warehouseId 與指定的return any 匹配。
例子:
id | name | warehouseId
-------------------------
1 | A | 1
2 | A | 2
3 | B | 1
4 | B | 3
指定 warehouseId = 2 預期:
id | name | warehouseId
-------------------------
2 | A | 2
3 | B | 1
如何在 postgresql 14 中實作這一點?
uj5u.com熱心網友回復:
這是一個案例DISTINCT ON:
SELECT DISTINCT ON (name)
id, name, warehouseId
FROM tab
ORDER BY name, warehouseId = 2 DESC;
這取決于TRUE > FALSE.
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/511363.html
上一篇:使用docker容器從6.3.1到8.5.x的flyway版本遷移問題
下一篇:INET值陣列的正確語法
