0

メッセージ アイコンがあり、クリックすると Facebook のようなメッセージが開きますdiv。はdiv自動的に一番下までスクロールされます。これdivで、最後の 25 メッセージを取得します。問題は、メッセージの一番下にある最新のものから順にメッセージを並べたいことですdiv。自動インクリメントであるidと日時であるdtの 2 つの注文列があります。

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

datetime 列 (降順) で並べ替えてから、上位 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 に答える
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 に答える