sql - postgresql 更新最新行

标签 sql postgresql

我在更新查询方面遇到了一些问题。我的任务是更改数据示例新闻行中的状态:

id     product_id  import_id     modified_at           status
30470     30470        5     "2014-12-08 14:46:22"     "NEW"
96091     30470        7     "2014-12-18 06:11:10"     "CURRENT"
161203    30470        9     "2014-12-29 12:05:35"     "CURRENT"
253973    30470        11    "2014-12-31 06:11:08"     "CURRENT"
317167    30470        12    "2014-12-31 06:12:18"     "CURRENT"
362304    30470        14    "2015-01-01 06:11:09"     "CURRENT"

所以在我的数据示例中,我必须更新 ID 为 362304 的行并将状态设置为“NEW”。 当然,我必须对所有产品都这样做,但首先我想尝试这个例子。

最佳答案

jarlh的view的idea不错,就试了一下。 我创建了一个带有如下查询的 View 。

SELECT
    s.id
    ,s.product_id
    ,s.import_id
    ,s.modified_at
    ,case when
            (
            SELECT max(tmp.id)
            FROM stack28609281 tmp
            WHERE tmp.product_id = s.product_id
            ) = s.id
        then "NEW"
        else "CURRENT"
        end as status
FROM stack28609281 s

创建此 View 后,您可以更改应用程序中的查询以使用您的 View 而不是表。

关于sql - postgresql 更新最新行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28609281/

相关文章:

MySQL-如何在 MySQL 中获取事件

sql - 试图计算 PostgreSQL 中两个经纬度点之间的距离 - PostgreSQL earth_box(ll_to_earth) 返回值的单位是什么?

Postgresql 和 BLOBs - bytea 的最大大小?

postgresql - 使用 Ansible 运行 postgresql96-setup initdb 时出错

sql - SQL:如何用上一行值填充空单元格?

MySQL OUTER LEFT JOIN 性能

c# - 在 SQL 和 C# 中连接来自不同数据库、服务器的表

sql - 如何使用 regexp_substr 修剪和忽略破折号

postgresql - 当我想按日期过滤时,ISO8601 是 PostgreSQL jsonb 的最佳日期格式吗?

postgresql - 什么是 "Australia Eastern Summer Standard Time"