Python sqlite3选择不重复字段

Python sqlite3选择不重复字段,python,python-3.x,sqlite,Python,Python 3.x,Sqlite,我正在用python处理sqlite3数据库,我需要从一个日期获取所有数据,但我只需要每个用户的最后一行。让我解释一下: 我目前的代码是: conn = sqlite3.connect('database.db') c = conn.cursor() t = (user, pastTS) resultPoints = c.execute("SELECT * FROM table WHERE user != ? AND timestamp >= ?", t) conn.close() 问

我正在用python处理sqlite3数据库,我需要从一个日期获取所有数据,但我只需要每个用户的最后一行。让我解释一下: 我目前的代码是:

conn = sqlite3.connect('database.db')
c = conn.cursor()

t = (user, pastTS)
resultPoints = c.execute("SELECT * FROM table WHERE user != ? AND timestamp >= ?", t)
conn.close()
问题是,它返回同一用户的多个条目/行,而我只需要最后一个条目/行。
有什么简单的方法可以实现这一点,或者我应该分析光标以删除重复字段吗?

如果我正确理解您的问题,您可以按用户分组并获得每个用户的最大时间戳值,然后加入
并输出结果:

c.execute("""
    SELECT *
    FROM (
          SELECT user, MAX(timestamp) as MaxTime
          FROM table
          GROUP BY user
    ) t2
    INNER JOIN table t1
    ON t1.user != ? and t1.user = t2.user AND t1.timestamp = t2.MaxTime
""", t)

result = c.fetchall()
print(result)

要为每个用户获取一个输出行,请使用分组。 要从每个组中选择要返回的行,请执行以下操作:


但那只会给我一个结果,不是吗?我需要每个用户提供一个结果。数据库可能如下所示,例如:User1 4419 User2 4114 User2 4112 User3 4109,我需要获取每个数据库的最后一行user@Javierd98明白了,请查看更新的查询。谢谢!这正是我需要的!!
c.execute("""SELECT user,
                    [other fields],
                    MAX(timestamp) AS timestamp
             FROM MyTable
             WHERE user != ?
               AND timestamp >= ?
             GROUP BY user
          """, (user, pastTS))