先看如下sql语句:
USE [mydb]
go
WITH w AS(
SELECT TOP 6 InfoId FROM(
SELECT InfoId FROM(
SELECT TOP 6
b.InfoId
FROM dbo.[BrowseLog] b,dbo.[Info] i
WHERE b.InfoId=i.InfoId
AND i.CityId=3
GROUP BY b.InfoId
ORDER BY MAX(b.BrowseId) DESC
) i1
UNION
SELECT InfoId FROM(
SELECT TOP 6
InfoId
FROM dbo.[Info]
WHERE CityId=3
ORDER BY InfoId DESC
) i2
) u
ORDER BY InfoId ASC
)
SELECT
w.InfoID
,i.[desc]
,i.small_pic_url
,s.SiteUrl
,s.SiteName
FROM w,dbo.[Info] i,dbo.[Site] s
WHERE w.InfoId=i.InfoId
AND i.SiteId=s.SiteId
ORDER BY w.InfoId DESC;
直接写 ORDER BY b.BrowseId DESC 是不行的,语法错误,用了MAX()以后就可以了。
其含义,就是用每个分组里面,browseId的最大值来排序。
>>> 您可能感兴趣的文章:
sql server中Group By语句的用法
sql server中group by的用法详解
有关distinct 多列问题结合group by的解决方法