设为首页收藏本站

Scripts 学盟

 找回密码
 加入学盟

QQ登录

只需一步,快速开始

查看: 1517|回复: 4
打印 上一主题 下一主题

也说group by [复制链接]

Rank: 8Rank: 8

跳转到指定楼层
1#
momo 发表于 2011-6-14 13:26:27 |只看该作者 |倒序浏览
本帖最后由 那个谁 于 2011-7-7 14:53 编辑

表  Newsdata 中字段:
d_id(主键)  d_title   d_classid  d_author  
一个author发表了多篇文章
现在是想查询出Newsdata中的前三篇文章但是是不同作者的
好了问题讲完,现在看下学盟的GGMM们的讨论过程:
  
漠漠() 11:27:29
想解决掉这个问题
漠漠() 11:27:45
不让他出重复的作者的文章
漠漠() 11:28:10
显示三条文章
漠漠() 11:28:15
不同作者的
俊俊@云南.昆明<cjqq284586@qq.com> 11:28:19
那你去个重复就行了么
俊俊@云南.昆明<cjqq284586@qq.com> 11:29:47
例如要显示的字段为A、B、C三个,而A字段的内容不能重复可以用下面的语句:
select A, min(B),min(C),count(*) from [table] where [条件] group by   A
having [条件] order by A desc
漠漠() 11:43:59
师傅这个min用了后是查出一个来吗?

这个地方要解释下:嘿嘿,因为我不懂那个group  by嘛,我就认为是上面那个语句查出一条记录出来,用了group  by后是这样滴
我跟那个谁的聊天记录:
漠漠 12:21:54
我还是不明白他的group by
Q 12:22:03
需要解释不
漠漠 12:22:38

漠漠 12:23:10
select max(d_id) from newsdata where d_classid=15 and nopass=false group by d_author
漠漠 12:23:16
查出来的应该是一条吧
Q 12:23:25
不是。
Q 12:23:32
所有作者
Q 12:24:06
按作者分组去主键ID
Q 12:24:30
然后 in 查出来的ID 取前3条
漠漠 12:24:39
Q  12:24:06
按作者分组去主键ID
漠漠 12:24:40

漠漠 12:24:42
不懂
Q 12:25:03
group by 懂不?
Q 12:25:17
就是去不重复的作者。
漠漠 12:25:29

Q 12:25:33
那么这些数据不是有个主键ID吗?
漠漠 12:25:37

Q 12:25:48
拿这些主键ID娶出来 不就是唯一的数据了吗
漠漠 12:26:21
奥,我明白了
漠漠 12:26:27
谢谢那个谁
漠漠 12:26:30
恍然大悟啊
漠漠 12:26:33
哈哈

  
   
莺子--学盟弟子(31807863) 11:54:52
你师傅刚刚不是帮你写了
漠漠() 11:55:11
不对喔
漠漠() 11:55:21
查不出结果来
漠漠() 11:55:34
select top 3 * from newsdata where d_classid=15 and nopass=false and d_author in(select top 3 name from doctor where name=newsdata.d_author) order by d_id desc"(其实这条语句的作用跟select top 3 * from newsdata是一个作用)
漠漠() 11:55:40
在这个基础上改
莺子--学盟弟子(31807863) 11:57:43
select top 3 * from newsdata where d_classid=15 and nopass=false group by d_author
这个是什么结果出来
那个谁() 11:57:55
这个是错误
漠漠() 11:58:00
是啊
漠漠() 11:58:11
group by不能这样子用
那个谁() 11:59:05
access 不能使用max函数?求解释(可以用的,只是我们用错地方了,嘿嘿)
漠漠() 11:59:13
"select * from newsdata where d_classid=15 and nopass=false   having d_author in (select top 3 name from doctor where name=newsdata.d_author) "
漠漠() 11:59:18
这个看起来很对
漠漠() 11:59:21
可是提示
那个谁() 11:59:27
对个屁(是喔,对个屁,就是不对的意思,having使用的时候是这样子滴:SQL语言中设定集合函数的查询条件时使用HAVING从句而不是WHERE从句换句话说就是前面查询的那些字段要有函数的使用,我这么理解滴,嘿嘿,不正确欢迎指正)
漠漠() 11:59:30
Microsoft JET Database Engine (0x80040E14)
HAVING 子句 (d_author In ) 未分组或集合。
/index.asp, 第 213 行


浏览器类型:
漠漠() 11:59:37
可是觉得意思上很对啊
漠漠() 11:59:43
先查出来然后过滤啊


混混@普宁.中国<alvin@iscripts.org> 12:08:34
select top 3 * from newsdata where id in(select max(d_id) from newsdata group by d_author ) order by d_id desc
混混@普宁.中国<alvin@iscripts.org> 12:08:51
select top 3 * from newsdata where d_id in(select max(d_id) from newsdata group by d_author ) order by d_id desc
莺子--学盟弟子(31807863) 12:09:24
漠漠,楼上那个,嘿嘿
混混@普宁.中国<alvin@iscripts.org> 12:10:07
select top 3 * from newsdata where d_classid=15 and nopass=false and d_id in(select max(d_id) from newsdata where d_classid=15 and nopass=false group by d_author ) order by d_id desc
至此,燕姐,混混老头出场问题搞定解决



特别鸣谢:那个谁、燕姐、混混和学盟里热心的童鞋们
分享到: QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
分享分享0 收藏收藏0
过了爱做梦的年纪
轰轰烈烈不如平静

管理员

超级大菜鸟

Rank: 9Rank: 9Rank: 9

2#
混混@普宁.中国 实名认证  发表于 2011-6-14 14:56:41 |只看该作者


同样 BS 一下,发帖占位的

使用道具 举报

Rank: 9Rank: 9Rank: 9

3#
浴火凤凰 发表于 2011-6-14 19:31:21 |只看该作者
馍馍果然和杰杰的爱好一样啊!!!都喜欢发帖占位

使用道具 举报

Rank: 6Rank: 6

4#
Yisin 发表于 2011-6-14 19:38:55 来自手机 |只看该作者
支持漠漠
路不好走,你却依旧满眼的爱,找不到理由...

使用道具 举报

Rank: 8Rank: 8

5#
momo 发表于 2011-6-14 21:58:37 |只看该作者
group by
GROUP BY 语句用于结合合计函数,根据一个或多个列对结果集进行分组。

过了爱做梦的年纪
轰轰烈烈不如平静

使用道具 举报

您需要登录后才可以回帖 登录 | 加入学盟

手机版|Scripts 学盟   |

GMT+8, 2024-4-30 01:39 , Processed in 1.081630 second(s), 11 queries .

Powered by Discuz! X2

© 2001-2011 Comsenz Inc.

回顶部