You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何筛选数据库中新增的更新行,排除未更新的旧行?

筛选数据库中带后缀的更新行方案

针对你遇到的这种数据库更新生成带-1/-2后缀ID的场景,我整理了几个实用的查询方案,帮你快速筛选出更新后的行,排除原始旧行:

1. 基础筛选:直接匹配带连字符的ID

如果你的需求只是排除没有后缀的原始行(比如ID为1的旧行),保留所有带-数字后缀的更新行,最简单的方式是用字符串匹配:

MySQL / MariaDB

SELECT * FROM your_table
WHERE id LIKE '%-%';

PostgreSQL

SELECT * FROM your_table
WHERE strpos(id, '-') > 0;

SQL Server

SELECT * FROM your_table
WHERE CHARINDEX('-', id) > 0;

这个方法快速直接,但如果ID里可能出现其他连字符(比如非后缀的情况),就需要更精准的匹配。

2. 精准匹配:确保后缀是数字

如果要严格筛选数字-数字格式的更新行(避免误匹配其他带连字符的ID),可以用正则表达式:

MySQL / MariaDB

SELECT * FROM your_table
WHERE id REGEXP '^[0-9]+-[0-9]+$';

PostgreSQL

SELECT * FROM your_table
WHERE id ~ '^[0-9]+-[0-9]+$';

SQL Server

SELECT * FROM your_table
WHERE PATINDEX('^[0-9]+-[0-9]+$', id) > 0;

这个正则表达式确保ID以数字开头,中间是连字符,后面跟着数字,完全匹配你描述的更新行格式。

3. 进阶需求:取每个原始ID的最新更新行

如果你的需求是每个原始ID只保留最新的更新行(比如ID1的行里,只保留1-2而排除1和1-1),可以通过提取原始ID前缀,分组后取最大后缀的行:

MySQL / MariaDB

SELECT t.*
FROM your_table t
INNER JOIN (
    -- 提取原始ID前缀,找到每个前缀对应的最大ID(因为后缀数字越大越新)
    SELECT SUBSTRING_INDEX(id, '-', 1) AS original_id,
           MAX(id) AS latest_id
    FROM your_table
    WHERE id LIKE '%-%'
    GROUP BY SUBSTRING_INDEX(id, '-', 1)
) latest ON t.id = latest.latest_id;

PostgreSQL

WITH ranked_updates AS (
    SELECT *,
           -- 按原始ID分组,按后缀数字倒序排名
           ROW_NUMBER() OVER (
               PARTITION BY SPLIT_PART(id, '-', 1)
               ORDER BY CAST(SPLIT_PART(id, '-', 2) AS INT) DESC
           ) AS rn
    FROM your_table
    WHERE strpos(id, '-') > 0
)
SELECT * FROM ranked_updates
WHERE rn = 1;

SQL Server

WITH ranked_updates AS (
    SELECT *,
           ROW_NUMBER() OVER (
               PARTITION BY LEFT(id, CHARINDEX('-', id) - 1)
               ORDER BY CAST(RIGHT(id, LEN(id) - CHARINDEX('-', id)) AS INT) DESC
           ) AS rn
    FROM your_table
    WHERE CHARINDEX('-', id) > 0
)
SELECT * FROM ranked_updates
WHERE rn = 1;

这个方案会帮你自动筛选出每个原始ID对应的最新更新行,适合需要追踪最新数据的场景。


内容的提问来源于stack exchange,提问作者anon

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.20 07:54:10