2010-02-26 80 views
1

我有一個存儲過程,這將使記錄,即最新的,爲了新增日期,這是我的程序....SQL Server中的存儲過程(按desc排序)?

select distinct top 5 videos.videoid,videos.videotitle,videos.videoname, 
    convert(varchar,videos.posteddate,106) as posteddate,videos.approvedstatus, 
    videos.videoimage,(ISNULL(videos.views,0.0)) as [views],videos.privacy, 
    (isnull(videos.rating,0.0)) as rating,videos.userid, 
    users.userid,users.username from videos left outer join users on 
videos.userid=users.userid 
    where videos.approvedstatus='Y' and videos.privacy='P' 
order by posteddate desc 

,但它是不是給最新記錄

當我執行查詢

select * from videos order by posteddate desc 

它給出了確切的記錄。但存儲過程沒有給出確切的記錄。 可以幫我嗎,謝謝。


+0

@Surya sasidhar - 「商店程序沒有給出確切的記錄」。請加上你的問題:你期望什麼,實際返回什麼以及它是錯誤的。 – Oded 2010-02-26 10:59:44

+1

我想要一個nitpick:它是一個商店** d **過程(它存儲**在SQL Server中)**用戶表和視頻表 – 2010-02-26 11:02:53

+1

我想要videoid,videoname,videotitle,views,userid,username,rating, - 不是「商店」程序(與商店或任何類型無關)。 – 2010-02-26 11:03:19

回答

4

使用ORDER BY videos.posteddate

select distinct top 5 
    videos.videoid, 
    videos.videotitle, 
    videos.videoname, 
    convert(varchar,videos.posteddate,106) as posteddate, 
    videos.approvedstatus, 
    videos.videoimage, 
    (ISNULL(videos.views,0.0)) as [views], 
    videos.privacy, 
    (isnull(videos.rating,0.0)) as rating, 
    videos.userid, 
    users.userid,users.username 
    from 
    videos 
    left outer join 
    users on videos.userid=users.userid 
    where 
    videos.approvedstatus='Y' and videos.privacy='P' 
    order by 
    videos.posteddate desc 

你原來的ORDER BY convert(varchar,videos.posteddate,106) DESC

那麼,你是通過 「日星期一YYYY」 字符串,而不是所期望的實際日期時間排序(YYYY-MM-DD的equivalant等等)

我想這是SQL Server 2000:從內存SQL Server 2005不會接受這種模糊性

+0

好先生gbn謝謝你的迴應我會檢查它並通知你 – 2010-02-26 11:59:21

+0

我正在使用SQL 2005 – 2010-02-26 12:04:57

+0

雅我明白了先生gbn我簡單刪除.. 轉換(varchar,videos.posteddate,106)爲發佈日期, 和我改變這樣的 videos.posteddate現在它給正確的我意思是最新視頻 – 2010-02-26 12:22:14