我有一个如下所示的表:
|device_id | login_id |
-----------------------
| 1 | NULL |
| 2 | A |
| 3 | A |
| 4 | NULL |
| 5 | B |
| 5 | C |
-----------------------
我想生成一个新列 (person_id),如下所示。该列本质上生成一个(人)唯一标识符。每个新的 NULL 值都有自己的 unique_id,每个不同的非空 login_id 都有自己唯一的 person_id。
|device_id | login_id | person_id |
-----------------------------------
| 1 | NULL | 1 |
| 2 | A | 2 |
| 3 | A | 2 |
| 4 | NULL | 3 |
| 5 | B | 4 |
| 5 | C | 5 |
-----------------------------------
有没有办法在不通过一系列查询和临时表的情况下在纯 PostgreSQL 中执行此操作?我正在使用 PostgreSQL 9.4。任何帮助深表感谢。