SQL-检索最近修改的帖子的id

SQL-检索最近修改的帖子的id,sql,Sql,给定以下SQL表: CREATE TABLE [dbo].[posts] ( [id] [int] IDENTITY(1,1) NOT NULL, [user_id] [int] NOT NULL, [date_posted] [datetime] NOT NULL, [date_modified] [datetime] NOT NULL, [content] [text] NOT NULL, CONSTRAINT [PK_posts] PRIMARY KE

给定以下SQL表:

CREATE TABLE [dbo].[posts]
(
   [id] [int] IDENTITY(1,1) NOT NULL,
   [user_id] [int] NOT NULL,
   [date_posted] [datetime] NOT NULL,
   [date_modified] [datetime] NOT NULL,
   [content] [text] NOT NULL,

   CONSTRAINT [PK_posts] PRIMARY KEY CLUSTERED ( [id] ASC )
)

如何为每个用户检索最近修改的帖子的帖子id?

我会这样做

Select * from dbo.posts where user_id = ? Order     by date_modified desc limit 1
试试这个

Select 
    Id
    ,[User_id]
    ,[Date_Posted]
    ,[Date_Modified]
    ,[Content]
From [dbo].[posts] posts
where date_modified = (select Max(date_modified) from posts2
                        where posts.[User_id] = posts2.[User_id])

您可以使用row_number为每个用户获取最近修改的帖子

编辑您使用的是mysql,它不支持行号。您可以使用“不存在”代替

旁注

Select * from posts GROUP BY user_id Order by date_modified desc
上面的查询可能看起来有效,但实际上不可靠,因为您无法影响通过order by返回组中的哪一行

MySQL扩展了GROUPBY的使用,以便选择列表可以引用 GROUP BY子句中未命名的未聚合列。这意味着 前面的查询在MySQL中是合法的。您可以使用此功能 通过避免不必要的列排序和 分组。但是,这主要是在每个 未在GROUP BY中命名的未聚合列对于每个列都是相同的 组服务器可以从每个组中自由选择任何值,因此 除非它们相同,否则选择的值是不确定的。 此外,不能从每个组中选择值 受添加ORDER by子句的影响。结果集的排序 在选择值后发生,并且“排序依据”不影响 服务器选择的每个组中的哪些值


只需一个简单的选择,由id、用户id和修改日期组成。但我不确定约束条件。最近修改的记录不是已经按升序排列了吗?查找聚合函数,特别是maxI在这种情况下是否需要MAX?这就是我到目前为止得到的:按用户从帖子组中选择*按日期排序这只适用于单个用户。如何为所有用户获得修改后的帖子?传递一个id数组,而不是user_id=?在中使用用户id?我正在寻找一种解决方案,该解决方案可返回此表中所有用户的帖子id。是否无法传递id数组?是的,但我正在寻找一个可返回所有用户帖子id的查询。我得到一个sytnax错误1064-您的SQL语法有错误;检查与您的MySQL服务器版本对应的手册,以获得正确的语法,以便在第3行使用“按用户分区\u id按日期排序\u修改描述自帖子t1其中”这一查询实际起作用:按用户选择*自帖子组\u id按日期排序\u修改描述与您的解决方案相比有什么区别?@Hannes your create表语法让我相信您正在使用sql server,请参阅updateAwesome!感谢您的解释。这里还有一个错误:1064-您的SQL语法有错误;检查与您的MySQL服务器版本对应的手册,以了解在第3行[dbo].[pos]中使用“[User\u id]、[Date\u Posted]、[Date\u Modified]、[Content]附近的正确语法
select * from posts p1
where not exists (
    select 1 from posts p2
    where p2.user_id = p1.user_id
    and p2.date_modified > p1.date_modified
)
Select * from posts GROUP BY user_id Order by date_modified desc