日期:2014-05-18  浏览次数:20632 次

如何查出20条最新刷新时间产品(同一商家就显示一条)?
商家表:tblA 
{
帐号:tblA_user
字段:tblA_a
字段:tblA_b
....
....
}

产品表: tblB 
{
产品标识ID:fldid
商家帐号:tblA_user -- 就是上面商家表里的帐号
字段:tblB_a
字段:tblB_b
刷新时间:tblB_update
....
....
}

我想按产品表tblB_update的倒序查出来最新时间20条,但是同一商家只显示一条产品信息(显示出我己列的二个表字段,其它的则不显示),就是说要显示20个商家与其对应的20条产品

实在是没分了,不好意思!!谢谢~


------解决方案--------------------
SQL code
select top 20 * from tblA a,tblB b where a.tblA_user=b.tblA_user
 and not exists(select 1 from tblB where tblA_user=b.tblA_user and tblB_update>b.tblB_update)
order by b.tblB_update desc

------解决方案--------------------
select top 20 m.*,n.* from tblB m , tblA n
where m.tblA_user = n.tblA_user and
tblB_update = (select max(tblB_update) from tblB where tblA_user = m.tblA_user)
order by m.tblB_update desc

select top 20 m.*,n.* from tblB m , tblA n
where m.tblA_user = n.tblA_user and
not exists (select 1 from tblB where tblA_user = m.tblA_user and tblB_update > m.tblB_update)
order by m.tblB_update desc
------解决方案--------------------
我在上面说了这个,你自己没看.

如果不能通过时间确定唯一性,则需要再加上一个字段来判断.
select top 20 m.*,n.* from tblB m , tblA n
where m.tblA_user = n.tblA_user and
not exists (select 1 from tblB where tblA_user = m.tblA_user and (tblB_update > m.tblB_update or (tblB_update = m.tblB_update and fldid > m.fldid)))
order by m.tblB_update desc