lgw2008521 2011-07-21 15:37:23 6715次浏览 9条回复 0 0 0

数据库数据如图:[attach]262[/attach] 我想使用group by 进行过滤语句如下:

SELECT
article_weight ,channel_id,article_id,article_title,article_time,article_pic,article_description
FROM `tbl_article` `t` WHERE status_code=1 and channel_id in (20,237,238)
and article_weight>0 and article_isindex=1 GROUP BY article_weight ORDER BY
article_weight asc,article_time desc LIMIT 5

查询结果如图: [attach]263[/attach] 第五条信息应该显示 article_id=19130的,现在却显示article_id=18804的; 请问我这个语句有什么错误?

  • 回复于 2011-07-21 16:06 举报

    建议把order by 和 group by 换过来试试

  • 回复于 2011-07-21 16:13 举报

    这个为什么要用group by进行查询了,group是对一组数据进行聚合

  • 回复于 2011-07-21 16:19 举报

    请问如果用DISTINCT 应该怎样写,这些sql的函数不经常用,一些技巧不会用,还大家指点一下,

    意思还是 查询一组数据按照article_weight进行降序排序,然后按照时间倒序排序,这样获取结果为按照artile_weight过滤的数据

  • 回复于 2011-07-21 16:21 举报

    GROUP BY article_weight ORDER BY
    article_weight
    是不是有点问题啊,分组后,又排序???

  • 回复于 2011-07-21 16:22 举报

    没看出来有啥错误。。。数据方面有误么。。。。

  • 回复于 2011-07-21 16:25 举报

    用变通的where不就行了吗

  • 回复于 2011-07-21 16:35 举报

    select from (SELECT FROM tbl_article t WHERE status_code=1 and channel_id in (20,237,238)
    and article_weight>0 and article_isindex=1 order by article_weight asc ) GROUP BY article_weight ORDER BY article_time desc LIMIT 5

  • 回复于 2011-07-21 19:21 举报

    学习下!

  • 回复于 2011-07-29 16:55 举报

    直接执行语句是可以,不错有的也不行。如果结合已有方法,需要改动很多啊,就不利于我们开发了

您需要登录后才可以回复。登录 | 立即注册