问个sql的问题
这样的表结构
id              reply
1                 0
2                 0
3                 0
4                 1
5                 3 我能不能把结果查出来并且是
4 2 3 5 让reply和id相同的内容排在相应id的后面 

解决方案 »

  1.   

    我看懂你的需求了,如果replay = 上一记录的id, 就把这条记录接到id的后面,但不知道怎么写,想一下
      

  2.   

    这种SQL语句很难实现的吧?!如果你要实现“第四条是对第一条的回复,第五条是对第三第的回复”,可以这样操作:先读取replay=0所有的数据,然后foreach循环,读取每个ID是否有回复,有则插入数组作为要输出的数据,没有则跳出继续。
      

  3.   

    这个何必要用sql去折腾呢.
    其实就是mysql怎么做无限分类的树型排版你只出了两层的例子,无限多层呢?一条搞不定的,要做估计只能上存储过程了.
    你实际上把业务端的东西扔sql层去考虑了.
    用php处理吧.
      

  4.   

    回楼上,是无限多层。可我要限制总体条数的,看这个http://bj.bbs.house.sina.com.cn/tree-28609-1.html
    如果用php处理,怎么限条数呢?给个思路吧
      

  5.   

    这个用PHP可以做到的啊,当你用函数计算数组里数据的个数达到总条数的时候,结束循环啊!
      

  6.   

    还要分页啊,你看下这http://bj.bbs.house.sina.com.cn/tree-28609-1.html要有那么容易我也不来这问了
      

  7.   

    建议到mysql版去发一个贴,记得以前有过一个这种需求的帖子,找不到了。
      

  8.   

    mysql> select * from t_dld11111;
    +------+-------+
    | id   | reply |
    +------+-------+
    |    1 |     0 |
    |    2 |     0 |
    |    3 |     0 |
    |    4 |     1 |
    |    5 |     3 |
    +------+-------+
    5 rows in set (0.00 sec)mysql> select id
        -> from t_dld11111
        -> order by if(reply>0,reply,id),id;
    +------+
    | id   |
    +------+
    |    1 |
    |    4 |
    |    2 |
    |    3 |
    |    5 |
    +------+
    5 rows in set (0.00 sec)mysql>
      

  9.   

    mysql> select GROUP_CONCAT(id ORDER BY if(reply>0,reply,id),id SEPARATOR ' ')
        -> from t_dld11111;
    +-----------------------------------------------------------------+
    | GROUP_CONCAT(id ORDER BY if(reply>0,reply,id),id SEPARATOR ' ') |
    +-----------------------------------------------------------------+
    | 1 4 2 3 5                                                       |
    +-----------------------------------------------------------------+
    1 row in set (0.00 sec)mysql>
      

  10.   

    这个语句不错,,学习了.不过实际应用有两点不足
    1是语句本身的效率问题,order by if(...)意味着无法使用索引了.
    2是lz后来提的分页问题.
      

  11.   

    当然mysql树型排版也不存在什么索引问题了,当我没说.
    剩下就是分页了.
      

  12.   

    1.分表就简单很多,而且是比较通用的做法.或者加个字段存储主贴的id,不管多少层的回复都存主贴的id
    2.还可以把数据都存php数组,利用数组分页----这个是下下等方案.