锁定老帖子 主题:SQL问题
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
|
|
---|---|
作者 | 正文 |
发表时间:2007-05-31
from groups g inner join topics t on (t.group_id = g.id) order by t.created_at desc limit 0,6 为什么结果不对? 相对于 select g.* from groups g inner join topics t on (t.group_id = g.id) order by t.created_at desc limit 0,6明显不一致 声明:ITeye文章版权属于作者,受法律保护。没有作者书面许可不得转载。
推荐链接
|
|
返回顶楼 | |
发表时间:2007-05-31
写的不一样 当然不一至
你想说什么 |
|
返回顶楼 | |
发表时间:2007-05-31
排在 g.* 这样选出来的,不在distinct g.*选出来的里面
|
|
返回顶楼 | |
发表时间:2007-05-31
?怎么
|
|
返回顶楼 | |
发表时间:2007-05-31
不太可能吧,distinct只是去掉重复条而已啊
肯定会有啊 难道还能丢了不成 |
|
返回顶楼 | |
发表时间:2007-05-31
所以才奇怪
|
|
返回顶楼 | |
发表时间:2007-05-31
kevinye 写道: select distinct g.*
from groups g inner join topics t on (t.group_id = g.id) order by t.created_at desc limit 0,6 为什么结果不对? 相对于 select g.* from groups g inner join topics t on (t.group_id = g.id) order by t.created_at desc limit 0,6明显不一致 我倒,我才看出来,主要问题在limit 0,6这个条件,你限制了取的条数,那么一个是取distinct一个直接取,这当然不一样了 |
|
返回顶楼 | |
发表时间:2007-06-01
why?
|
|
返回顶楼 | |
发表时间:2007-06-01
我举个例子但和你说的那个不一定一样,应该是先取记录吧,就是那个select先弄出来,假如记录是a,a,b,b,c,c,d,d,e,e,f,f,g,g,h,h,i,i
第一把,先取吧是a,a,b,b,c,c,.....假如再倒排下c,c,b,b,a,a,....完了,再按你那个索引取记录6条,c,c,b,b,a,a完事 第二把,先取吧a,b,c,d,e,f,g,h,i完了,再倒排下i,h,g,e,d,c,b,a好了再按你的那个索引取记录6条,i,h,g,e,d,c完事 结果是没一个一样的 |
|
返回顶楼 | |
发表时间:2007-06-17
SELECT g . * , count( DISTINCT t.group_id )
FROM groups g INNER JOIN topics t ON ( t.group_id = g.id ) GROUP BY t.group_id ORDER BY t.created_at DESC LIMIT 0 , 6 其原因是distinct只能返回它的目标字段,而无法返回其它字段 |
|
返回顶楼 | |