按相同值选择和分组mysql

fhity93d  于 2022-11-21  发布在  Mysql
关注(0)|答案(1)|浏览(168)

我有如下数据表

| id | wallet_id | wallet_name | deposit |   |
|----|-----------|-------------|---------|---|
| 1  | 12        | a_wallet    | 10      |   |
| 2  | 14        | c_wallet    | 12      |   |
| 3  | 12        | a_wallet    | 24      |   |
| 4  | 15        | e_wallet    | 50      |   |
| 5  | 14        | c_wallet    | 10      |   |
| 6  | 15        | e_wallet    | 22      |   |

我想选择相同的wallet_id并分组,可能如下所示

| wallet_id | id | wallet_name |
|-----------|----|-------------|
| 12        | 1  | a_wallet    |
|           | 3  | a_wallet    |
| 14        | 2  | c_wallet    |
|           | 5  | c_wallet    |
| 15        | 4  | e_wallet    |
|           | 6  | e_wallet    |

我已经试过了

select wallet_id, id, wallet_name from wallet group by wallet_id

但它显示为没有分组的普通选择查询。
需要你的帮助,谢谢

2guxujil

2guxujil1#

我们通常会从表示层(例如PHP)处理您的需求,但如果您碰巧使用MySQL 8+,这里有一种直接从MySQL完成此操作的方法:

SELECT
    CASE WHEN ROW_NUMBER() OVER (PARTITION BY wallet_id ORDER BY id) = 1
         THEN wallet_id END AS wallet_id,
    id,
    wallet_name
FROM wallet w
ORDER BY w.wallet_id, id;

相关问题