及联的view有以下几个字段:作者,作者用户创建时间,发表文章的题目,发布状态(0普通,1精华)两种
我希望按作者创建时间倒序列10个不同作者发布的文章,每个作者列一条,语句是
select userName,article_status,create_time,title from user_article group by userName order by create_time desc limit 0,10
现在有个需求,就是如果该作者有状态为1的文章,则列该文章,我修改了语句 select userName,max(article_status) as maxStatus,create_time,title from user_article group by userName order by create_time desc limit 0,10
返回结果 maxStatus 是为1了,但是title还是原来不加maxStatus的title,而不是真正status 为1的 title,
我的问题是order by 是给分组之间排序,那group by 后的每个分组内,如何按status排序呢
我希望按作者创建时间倒序列10个不同作者发布的文章,每个作者列一条,语句是
select userName,article_status,create_time,title from user_article group by userName order by create_time desc limit 0,10
现在有个需求,就是如果该作者有状态为1的文章,则列该文章,我修改了语句 select userName,max(article_status) as maxStatus,create_time,title from user_article group by userName order by create_time desc limit 0,10
返回结果 maxStatus 是为1了,但是title还是原来不加maxStatus的title,而不是真正status 为1的 title,
我的问题是order by 是给分组之间排序,那group by 后的每个分组内,如何按status排序呢
解决方案 »
- 求救:在存储过程中,怎么根据输入的时间段 判断是几天啊?
- [急]有没有可以用SQL语句导出视图/存储过程/触发器的方法?
- SQL数据库可以像ACCESS一样设置密码加密吗
- 数据库中计算时间问题,谢谢
- sql中的超难问题()
- 存储过程中这样写有什么错?set @sql_str="select top 10 * from medication where "+@term_str
- 大吓出手,一个很有创意的难题!
- 各位,帮忙!!!解决后立即结贴!!!我在线等待
- 数据库设计有那几个主要的步骤?关键的是什么?欢迎各抒己见!
- vb和SQL的连接问题
- 一道练习题,三个表之间的查询 新手上路 求大侠指教
- 无法对大小为 8474 的行排序,该值大于允许的最大值 8094
userName,create_time,title,article_status,
数据例子:
zhangsan,2008-3-23,putongtitle,0
zhangsan,208-3-23,jinghuatitle,1
我用select userName,max(article_status) as maxStatus,create_time,title from user_article group by userName order by create_time desc limit 0,10
我希望列出的记录是zhangsan,2008-3-23,jinghuatitle,1,
但实际上列出的是zhangsan,2008-3-23,putongtitle,1
select *
from
(
select *
from user_article t
where article_status=1
and not exists(
select 1
from user_article
where userName=t.userName
and article_status=1
and create_time>t.create_time
)
) tt
order by create_time desc limit 0,10
我需要的的是如果这个作者有status为1的就列,如果没有还是列一条status为0的
比如lisi
他只有这一篇文章
lisi ,208-3-22,putong,0
因为没有status为1的文章,所以应该列出 lisi,2008-3-22,putong,0的文章
这样每个userName最多有两个分组,再程序处理一下,有status为1的取1的分组,否则取0的
select userName,article_status ,create_time,title
from user_article t
where article_status=(case when exists(select 1 from user_article where userName=t.userName and article_status=1) then 1 else 0 end)
group by userName ,article_status
order by create_time desc limit 0,10