日期:2014-05-19  浏览次数:20523 次

急,动网数据库表的查询问题
查询主题表dv_topic
假设要查询20个版面,每个版面查询一条最新发布的记录.
共查询出20条记录,要怎么实现?

dv_topic表的一些字段
版面ID:boardid
发帖时间:dateandtime
标题:title
发帖人:username


哪个高手来写一个语句.
如果不限制每个版一个记录这个就容易,但我要指定的那些版,每版一条.



------解决方案--------------------
changkai(kai) ( ) 信誉:100 Blog 加为好友 2007-06-13 11:15:39 得分: 0


--方法一
Select * From dv_topic A Where Not Exists(Select dateandtime From dv_topic Where boardid = A.boardid And dateandtime > A.dateandtime)
Where A.boardid in (1,2,3,6,8,10)
--方法二
Select * From dv_topic A Where dateandtime = (Select Max(dateandtime) From dv_topic Where boardid = A.boardid)
Where A.boardid in (1,2,3,6,8,10)
服务器: 消息 156,级别 15,状态 1,行 3
在关键字 'Where ' 附近有语法错误。
服务器: 消息 156,级别 15,状态 1,行 6
在关键字 'Where ' 附近有语法错误。

====
方法三正确,方法一二有错误


---------------

稍微修改下就可以了,加的時候直接加Where了改為And即可。


--方法一
Select * From dv_topic A Where Not Exists(Select dateandtime From dv_topic Where boardid = A.boardid And dateandtime > A.dateandtime)
And A.boardid in (1,2,3,6,8,10)

--方法二
Select * From dv_topic A Where dateandtime = (Select Max(dateandtime) From dv_topic Where boardid = A.boardid)
And A.boardid in (1,2,3,6,8,10)

--方法三
Select A.* From dv_topic A
Inner Join
(Select boardid, Max(dateandtime) As dateandtime From dv_topic Group By boardid) B
On A.boardid = B.boardid And A.dateandtime = B.dateandtime
Where A.boardid in (1,2,3,6,8,10)