0

我有一个 Messages 图标,点击它会打开一个类似 facebook 的消息div。会div自动滚动到底部。在此div,我收到了最后 25 条消息。问题是我希望消息从div. 我有两个订单列:id是自动增量,dt是日期时间。

我已经尝试了 ORDER BY 的所有组合,但我无法得到它。

SELECT TOP 25 
    rec, 
    sender, 
    message, 
    CONVERT(varchar(20),dt,120) AS date 
FROM dbo.messages 
WHERE (rec='$user[name]' OR sender='$user[name]') 
ORDER BY id DESC, dt ASC

没有底部,但SELECT BOTTOM 25 * ORDER BY id理论上可以完美运行。

4

2 回答 2

0

得到SELECT BOTTOM 25 * ORDER BY id (ie; TOP 25 ORDER BY id DESC)

;with cte as (
  select top 25 
        id,
        rec, 
        sender, 
        message, 
        dt
  from dbo.messages 
  where (rec='$user[name]' OR sender='$user[name]') 
  order by id desc
)
select rec, sender, message, convert(varchar(20),dt,120) date
from cte
order by id,dt -- as required here
于 2013-02-25T13:22:19.740 回答
0

您应该可以按日期时间列(降序)排序,然后拉到前 25 位。我已经修改了您的查询。

SELECT TOP 25 
rec, sender, message, CONVERT(varchar(20),dt,120) AS date 
FROM dbo.messages
WHERE (rec='$user[name]' OR sender='$user[name]') 
ORDER BY dt DESC
于 2013-02-25T13:04:59.600 回答