sqlite 如何删除重复的SQL记录以保留最后一个条目[已关闭]

nfzehxib  于 2022-12-19  发布在  SQLite
关注(0)|答案(1)|浏览(254)

已关闭。此问题需要details or clarity。当前不接受答案。
**想要改进此问题?**添加详细信息并通过editing this post阐明问题。

11小时前关门了。
Improve this question
我有一个名为“messages”的表,其中包含:

id, owner, content
"id1", "bob", "c1"
"id1", "alice", "c2"
"id2", "bob", "c3"
"id3", "charles", "c4"

消息表示一系列按顺序排列的事件。如果有两个事件具有相同的id,则只显示最后一个事件。
(By“last”是指从上到下,我不知道是否可以使用rowid来排序,或者是否需要一个自动递增的整数)
我想检索ID、所有者、内容,但只接收不同的ID:

"id1","alice","c2"
"id2","bob","c3"
"id3","charles","c4"

我如何用sqlite查询这个?

kqhtkvqz

kqhtkvqz1#

content列强制转换为整数值时,可以使用ROW_NUMBER()窗口函数,例如

WITH t1 AS
(   
 SELECT *,
        ROW_NUMBER() OVER 
        (PARTITION BY id ORDER BY CAST(REPLACE(content,'c','') AS INT) DESC) AS rn
   FROM t
)
SELECT id, owner, content
  FROM t1
 WHERE rn = 1

假定顺序是基于该列的数值,该列对于那些整数仅具有c前缀值。

相关问题