我需要从表中获得3个随机行,然后通过BannerWeight列对这些行进行排序。

因此,如果数据为:

BannerID     BannerWeight
   1               5
   2               5
   3               10
   4               5
   5               10


我希望结果是:

BannerID     BannerWeight
   5               10
   2               5
   4               5


到目前为止,我有:

SELECT TOP 3 b.BannerID, b.BannerWeight FROM CMS_Banner b
INNER JOIN CMS_BannerCategory c ON b.BannerCategoryID = c.BannerCategoryID
WHERE c.BannerCategoryName LIKE 'HomepageSponsors'
ORDER BY NEWID()


一旦获得它们,我就无法弄清楚如何对这3个随机行进行排序。我试着做

 ORDER BY BannerWeight, NEWID()


但这只是让我得到3条随机行,其中BannerWeight为5。

这是一个SQLFiddle:http://sqlfiddle.com/#!6/a8088/2/0

最佳答案

最简单的选择(我认为)是使用子查询:

Select * from
    (
    SELECT TOP 3 b.BannerID, b.BannerWeight FROM Banners b
    ORDER BY NEWID()
    ) a
order by a.bannerweight

关于sql - 从表中选择前N个随机行,然后按列排序,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/31689009/

10-13 04:43