Postgresql查询以检索每个id最后插入的行
假设我有如下数据的PostgreSQL数据库表。此处使用的lat和long值的一些随机值 身份证件 日期 拉特 长的 1. 2014-02-01 10 20.12 1. 2014-02-01 20 30 1. 2014-02-01 12 14 2. 2014-02-02 12 16 2. 2014-02-02 18 22 3. 2014-06-12 23 10 3. 2014-06-12 15 12 3. 2014-06-12 85 72Postgresql查询以检索每个id最后插入的行,sql,postgresql,Sql,Postgresql,假设我有如下数据的PostgreSQL数据库表。此处使用的lat和long值的一些随机值 身份证件 日期 拉特 长的 1. 2014-02-01 10 20.12 1. 2014-02-01 20 30 1. 2014-02-01 12 14 2. 2014-02-02 12 16 2. 2014-02-02 18 22 3. 2014-06-12 23 10 3. 2014-06-12 15 12 3. 2014-06-12 85 72 你可能需要这个吗?你不能。SQL表表示无序(多)集。也就
你可能需要这个吗?你不能。SQL表表示无序(多)集。也就是说,没有排序,没有“最后插入”*,除非列中有该信息 存储此信息的两种典型方法:
列(或相当于identity
列)serial
- 创建的
时间戳(这并不完美,因为可能存在重复项)
distinct on
,这是一种非常方便的方式:
select distinct on (id) t.*
from t
order by id, <ordering col> desc;
在(id)t上选择distinct*
从t
按id排序,描述;
您可能希望使用自动生成的identity
列重新创建数据,以便捕获插入顺序
SELECT DISTINCT ON(id), lat, long
FROM tableName
ORDER BY id;
此查询为每个id提供最后插入的
lat和long
。不完全正确。如果没有另一列指定顺序,则无法预测具有相同id的行的顺序。不仅无法预测顺序,而且顺序可能会因运行而异。
SELECT DISTINCT ON(id), lat, long
FROM tableName
ORDER BY id;