我們之前有一個包含 pinHash 的用戶資訊表
| ID | 用戶身份 | 種子 | 資產型別 | pinHash |
|---|---|---|---|---|
| 1 | 110 | a12H | 位元幣 | q23es |
| 2 | 111 | r23s | 位元幣 | e2w12 |
| 3 | 111 | y36w | 以太坊 | e2w12 |
因此,對于相同的 userId,所有資產型別的 pinHash 都是相同的。
現在,我們正在遷移到另一個表
| ID | 用戶身份 | pinHash |
|---|---|---|
| 1 | 110 | q23es |
| 2 | 111 | e2w12 |
哪個 SQL 可用于獲取此遷移的所有記錄,即具有 pinHash 的不同 userId。
注意:我已經使用 spring boot 進行了此遷移,我從第一個表中獲取所有行,然后使用 HashMap 在新表中僅放置一行 userId。盡管如此,我還是喜歡一個只有不同的 userId 行會作為結果的 SQL。
uj5u.com熱心網友回復:
假設您總是想報告id每組重復項的最小值,我們可以在這里使用聚合:
SELECT MIN(id) AS id, userId, pinHash
FROM yourTable
GROUP BY userId, pinHash;
uj5u.com熱心網友回復:
您的資料
CREATE TABLE TEST(
id INTEGER NOT NULL
,userId INTEGER NOT NULL
,seed VARCHAR(5) NOT NULL
,assetType VARCHAR(9) NOT NULL
,pinHash VARCHAR(5) NOT NULL
);
INSERT INTO TEST
(id,userId,seed,assetType,pinHash) VALUES
(1,110,'a12H','Bitcoin','q23es'),
(2,111,'r23s','Bitcoin','e2w12'),
(3,111,'y36w','Ethereum','e2w12');
使用Row_number功能
SELECT id,
userid,
pinhash
FROM (SELECT id,
userid,
seed,
assettype,
pinhash,
Row_number ()
OVER (
partition BY userid, pinhash
ORDER BY id ASC ) rn
FROM test) T
WHERE rn = 1
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/482494.html
標籤:sql 数据库 PostgreSQL 形式
上一篇:查找不同組的值的總和
