新人提问:我有三张表,多表连接查询之后有很多重复的字段,现在想请问一下,用distinct怎么去掉啊,select distinct* from Student right join studenttoclass on student.student_id=studenttoclass.student_id right join class on class.class_id = Studenttoclass.class_id
这样写无效啊、各位教教我把
这样写无效啊、各位教教我把
解决方案 »
- visualSVN怎么命令行格式添加删除管理员用户名和密码?
- sql server 2008的问题:unhandled exception......
- 2000的bak文件还原问题
- sql server 数据源配置错误
- 开发了软件,必须将数据库交给客户,那样,数据库结构就全暴露了,开发商的技术秘密不就难以保证了吗?在附加数据库或恢复数据库时用密码该多好啊,不知道密码就不能附加(或恢复)数据库,这种保密措施为什么就无法在SQLSERVER上实现呢?
- SQL SERVER安装报错:以前的个程序已在安装计算机上创建挂起的文件操作,
- 请帮看哈这条sql怎么加索引优化
- 关于日期,时间的问题
- MSSQL如何定时还原数据库备份?
- 关于SQL语句的请教
- 这个查询怎么做呢?
- sql2000 中能存文件路徑嗎?要鏈接那種一點能打開文件
在表中,可能会包含重复值。这并不成问题,不过,有时您也许希望仅仅列出不同(distinct)的值。关键词 DISTINCT 用于返回唯一不同的值。
是两条记录完全一样才是重复
如果*中任何一个字段不同就算不同记录(即不重复记录)
如果只是部分字段重复要求去重
要看具体去重复的规则
如
col qty
A 2
A 3
A 1
B 6
--去掉col
A 3
B 6
distinct 对查询的所有列结果进行比较的
id name
1 a
2 b
3 c
4 c
5 b库结构大概这样,这只是一个简单的例子,实际情况会复杂得多。比如我想用一条语句查询得到name不重复的所有数据,那就必须使用distinct去掉多余的重复记录。select distinct name from table
得到的结果是: ---------- name
ac好像达到效果了,可是,我想要得到的是id值呢?改一下查询语句吧:select distinct name, id from table结果会是:---------- id name
1 a
2 b
3 c
4 c
5 bdistinct怎么没起作用?作用是起了的,不过他同时作用了两个字段,也就是必须得id与name都相同的才会被排除我们再改改查询语句:select id, distinct name from table很遗憾,除了错误信息你什么也得不到,distinct必须放在开头。难到不能把distinct放到where条件里?能,照样报错。--------------------------------------------------------下面方法可行:select *, count(distinct name) from table group by name结果:id name count(distinct name)
1 a 1
2 b 1
3 c 1最后一项是多余的,不用管就行了,目的达到group by 必须放在 order by 和 limit之前,不然会报错
详细出处参考:http://www.jb51.net/article/24717.htm