请问各位大侠
数据库中有一个记录有两条相同的,另一个记录有3条相同的
我怎么才能每条记录只取其中的一条啊?谢谢了
数据库中有一个记录有两条相同的,另一个记录有3条相同的
我怎么才能每条记录只取其中的一条啊?谢谢了
解决方案 »
- '-' 附近有语法错误。
- 2005优化顾问的优化结果,脚本预览怎么用
- SQL数据库备份的代码,谁能帮我看看。
- sqlserver中如何输入英语音标,从别的地方拷过去的不好用
- 我想用某一个字段a排序,但是我的SQL语句包含distinct,在distinct的时候不想把字段a给列进去
- 请教一个update语句
- 简单问题,可是我有疑问!!!!!!!!!!!!!!!
- (在线等待)包含有主键的表是否一定有@@identity列 !以及如何判断表中是否有主键,和如何返回主键的列名
- 局域网内一台机器代码连接另一台机器SQL Server2000的奇怪问题
- 现在知道如何生成表结构的SQL,那表记录的SQL如何生成??
- 求SQL语句或方法
- sql server 2005 里面我在哪个库的哪个表里能看到像2K里面的所有对象信息??
1、使用min,max函数处理;
2、使用exist关键字处理。
就可以得到无重复记录的结果集。
id name
1 a
2 b
3 c
4 c
5 b库结构大概这样,这只是一个简单的例子,实际情况会复杂得多。比如我想用一条语句查询得到name不重复的所有数据,那就必须使用distinct去掉多余的重复记录。select distinct name from table
得到的结果是: name
a
b
c好像达到效果了,可是,我想要得到的是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条件里?能,照样报错。很麻烦吧?确实,费尽心思都没能解决这个问题。没办法,继续找人问。拉住公司里一JAVA程序员,他给我演示了oracle里使用distinct之后,也没找到mysql里的解决方案,最后下班之前他建议我试试group by。试了半天,也不行,最后在mysql手册里找到一个用法,用group_concat(distinct name)配合group by name实现了我所需要的功能,兴奋,天佑我也,赶快试试。报错郁闷。连mysql手册也跟我过不去,先给了我希望,然后又把我推向失望,好狠哪。再仔细一查,group_concat函数是4.1支持,晕,我4.0的。没办法,升级,升完级一试,成功终于搞定了,不过这样一来,又必须要求客户也升级了。突然灵机一闪,既然可以使用group_concat函数,那其它函数能行吗?赶紧用count函数一试,成功,我。想哭啊,费了这么多工夫。。原来就这么简单现在将完整语句放出:select *, count(distinct name) from table group by name结果: id name count(distinct name)
1 a 1
2 b 1
3 c 1最后一项是多余的,不用管就行了,目的达到。。唉,原来mysql这么笨,轻轻一下就把他骗过去了,郁闷也就我吧(对了,还有容容那家伙),现在拿出来希望大家不要被这问题折腾。哦,对,再顺便说一句,group by 必须放在 order by 和 limit之前,不然会报错,差不多了,发给容容放网站上去,我继续忙碌-----------------------------------------------------------------------------------------
更郁闷的事情发生了,在准备提交时容容发现,有更简单的解决方法select id, name from table group by name看来对mysql的了解还是太肤浅了,不怕被笑话,发出来让大家别犯同样的错误
不能以 DISTINCT 方式选择 text、ntext 或 image 数据类型。
数据库老师设计得本来不太合理.
只好用group by 语句了
---------------------------
这个的sql会报错吧,按name分组是不能select id字段的