Tag Archives: sql

向大家求助一个mysql的问题

对于评论的回复,目前流行的主要有两种形式,一种是嵌套评论;另一种是'@评论者'带有悬浮效果。大多博客使用的是嵌套评论,因为嵌套评论更适合较深层次的讨论,我也不例外,前期一直使用嵌套评论。现在换主题了,不想支持嵌套了,取消wordpress的嵌套后,原先有层次的评论就孤立起来而且没有'@评论者',也就是没有悬浮了。

我现在想做的事就是将以前的子评论内容最前面都刷上'@评论者',从而能够通过悬浮效果看到被回复的评论,刷数据的思路很简单,父子评论是通过wp_comments表的comment_parent字段关联的,只要过滤出comment_parent不为空的记录,然后更新comment_content字段就可以了,用习惯了oracle的我以为一个sql可以很轻松的搞定,谁知道mysql居然不支持一下形式的更新嵌套:
READ ON

distinct和rownum使用

首先,要明白rownum的真正含义。rownum是oracle系统顺序分配为从查询返回的行的编号,返回的第一行分配的是1,第二行是2,依此类推,这个伪字段可以用于限制查询返回的总行数.oracle在select出一条记录后便加上一个rownum,   而不等所有的结果都select出来后再加上rownum。

然后是distinct的工作原理。distinct是等记录集全部查询出后,然后进行排序,最后再删除重复数据,而不是边查边删除重复数据,因为这是不切实际的,毕竟又太多的位置数据。

有了对oracle这两个关键词的准确理解后,就不难弄清楚为什么,当distinct和rownum一起使用的时候就得不到想要的记录条数了,具体现象还是举例子说明吧,语言可能有点空洞。

一:先来看下面sql查询出的记录
[sql]select a.access_id, a.link_id
from asn_access a, asn_res_link b
where a.access_id = '000000000000000000035696'
and a.link_id = b.link_id
and a.delete_state = '0'
and b.delete_state = '0'[/sql]
READ ON