Node.js 在Postgres中为每个唯一JSONB值选择一行

Node.js 在Postgres中为每个唯一JSONB值选择一行,node.js,json,postgresql,sequelize.js,Node.js,Json,Postgresql,Sequelize.js,我试图从每个唯一的data->“account”获取最新版本的数据,但仅针对特定的父UUID。我希望能够保存历史数据,所以更新行不是一个选项 数据如下所示: | id | name | parent | data | updated | created | |--------|------------|--------|---------------------------------|---------|--------

我试图从每个唯一的data->“account”获取最新版本的数据,但仅针对特定的父UUID。我希望能够保存历史数据,所以更新行不是一个选项

数据如下所示:

| id     | name       | parent | data                            | updated | created |
|--------|------------|--------|---------------------------------|---------|---------|
| uuid-a | First      | uuid-x | {"account": 1001, "value": 700} | date    | date    |
| uuid-b | Irrelevant | uuid-y | {"account": 9999, "value": 300} | date    | date    |
| uuid-c | Second     | uuid-x | {"account": 1002, "value": 500} | date    | date    |
| uuid-d | Third      | uuid-x | {"account": 1003, "value": 200} | date    | date    |
| uuid-e | Old        | uuid-x | {"account": 1003, "value": 100} | date    | date    |
...
我曾尝试使用DISTINCT ON和GROUP BY对每个唯一数据只获取一行->>“account”,但我无法编写有效的查询。我最近的查询尝试如下所示:

| id     | name       | parent | data                            | updated | created |
|--------|------------|--------|---------------------------------|---------|---------|
| uuid-a | First      | uuid-x | {"account": 1001, "value": 700} | date    | date    |
| uuid-b | Irrelevant | uuid-y | {"account": 9999, "value": 300} | date    | date    |
| uuid-c | Second     | uuid-x | {"account": 1002, "value": 500} | date    | date    |
| uuid-d | Third      | uuid-x | {"account": 1003, "value": 200} | date    | date    |
| uuid-e | Old        | uuid-x | {"account": 1003, "value": 100} | date    | date    |
...
选择不同的数据->>“帐户”*-仅为每个唯一的“帐户”选择一行 从表-定义源表 其中parent='uuid-x'-仅获取正确父级的行 ORDER BY created DESC-获取最新数据 以上述数据为例,我希望查询的输出为:

| id     | name   | parent | data                            | updated | created |
|--------|--------|--------|---------------------------------|---------|---------|
| uuid-a | First  | uuid-x | {"account": 1001, "value": 700} | date    | date    |
| uuid-c | Second | uuid-x | {"account": 1002, "value": 500} | date    | date    |
| uuid-d | Third  | uuid-x | {"account": 1003, "value": 200} | date    | date    |
目前,我面临一个关于无法通过创建进行排序的错误:

表达式上的SELECT DISTINCT必须按表达式匹配初始顺序

我试图弄清楚我为什么会收到这个错误——以及如何修复它,但我无法使用其他资源解决它。我试图在NodeJS/SequelizeJS环境中执行这些操作,但这对于这个特定的问题不重要

提前感谢。

它希望您使用ORDER BY data->“account”ASC,该ASC由DESC创建。实际上,当您使用DISTINCT ON时,您必须始终按照应用它的列进行排序。DISTINCT ON表达式必须与最左边的ORDER BY表达式匹配。