注册 登录
编程论坛 SQL Server论坛

这样的问题如何解决?

wangsdong 发布于 2011-04-08 17:05, 541 次点击
表名:product
字段名:pid pname(产品名称),content(产品介绍) userid(用户ID) updatetime(更新时间)
现在要查询产品名称包含“aaa”的产品,并且按更新时间排序,并且一个用户只显示一个产品

这样的sql语句怎么写?
或者有没有其他方法解决?

我自己写的sql语句代码:
select * from product where pname like '%aaa%' group by userid order by updatetime
在sql server中运行,提示:
order by 子句中的列“updatetime”无效,因为该列没有包含在聚合函数或者group by 子句中。
2 回复
#2
panyanpan2011-04-08 21:51
select * from product where userid in
(
--取出产品名称包含“aaa”的产品  并且----
    select userid from product where pname like '%aaa%' and
   (pid in
      (--如果一个用户有多个产品的话只取 pid为 min(pid)  即pid为最小值的 产品
       select min(pid) from product group by userid having count(pid)>1
      )
    or pid in
      (--如果一个用户只有一个产品  则直接取
       select pid from product group by userid having count(pid)=1
      )
   )
)
order by updatetime
#3
wangsdong2011-04-11 08:50
谢谢,我试试
1