结构大概这样,这只是一个简单的例子,实际情况会复杂得多。
比如我想用一条语句查询得到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 b
distinct怎么没起作用?作用是起了的,不过他同时作用了两个字段
,也就是必须得id与name都相同的才会被排除。
我们再改改查询语句:
select id, distinct name from table
很遗憾,除了错误信息你什么也得不到,distinct必须放在开头。
难
到不能把distinct放到where条件里?能,照样报错。
很麻烦吧?确实,费尽心思都没能解决这个问题。
没办法,继续找人问。
拉住公司里一JA V A程序员,他给我演示了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 min(id),a,b,c,d from tables group by a
这个写法更为简捷。
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=gbk">
<script language="javascript">
function selectIt(action){
var testform=document.getElementById("bdkey");
for(var i=0 ;i<testform.elements.length;i++){
if(testform.elements[i].type=="checkbox"){
e=testform.elements[i];
e.checked=(action=="selectAll")?1:(!e.checked);
}
}
}
</script>
</head>
<body>
<form name="bdkey" id="bdkey">
<p class="STYLE1">
全选
<input type="checkbox" name="selectAll" value="checkbox" onClick="selectIt('selectAll')"><br>
反选
<input type="checkbox" name="invest" value="checkbox" onClick="selectIt()"><br>
Item1
<input type="checkbox" name="checkbox" value="checkbox">
<br>
Item2
<input type="checkbox" name="checkbox" value="checkbox"><br>
Item3
<input type="checkbox" name="checkbox" value="checkbox"><br>
Item4
<input type="checkbox" name="checkbox" value="checkbox"><br>
Item5
<input type="checkbox" name="checkbox" value="checkbox">
</p>
</form>
</body>
本篇文章来源于《无忧WEB技术网》转载请以链接形式注明出处网址:/web/web_1171693015.html。