摘要: Distinct的作用是用于从指定集合中消除重复的元组,经常和count搭档工作,语法如下COUNT( { [ ALL | DISTINCT ] expression ] | * } ) 这时,可能会碰到如下情况,你想统计同时有多列字段重复的数目,你可能会立马想到如下方法:selectcount( distinct col1 , col2 , col3 , .......) from table但是,这样是不允许的,因为count是不能统计多个字段的,虽然distinct是可行的。有种比较直接的方法就是把消除重复后在统计查询:select count(*) from (select disti 阅读全文
posted @ 2012-04-18 11:38 xiepeixing 阅读(27570) 评论(0) 推荐(0) 编辑
摘要: 今天遇到用left join时候发现查询出来的结果比预期的少了很多?不知道为什么,上网一查,原来如此!在使用leftjoin时,on和where条件的区别如下:1、 on条件是在生成临时表时使用的条件,它不管on中的条件是否为真,都会返回左边表中的记录。可以理解为,左表记录保留,右表不满足条件的填写为null2、where条件是在临时表生成好后,再对临时表进行过滤的条件。这时已经没有left join的含义(必须返回左边表的记录)了,条件不为真的就全部过滤掉。假设有两张表:表1 tab1:id size1 102 203 30表2 tab2:size name10 AAA20 BBB20 CC 阅读全文
posted @ 2012-04-18 08:42 xiepeixing 阅读(3833) 评论(1) 推荐(1) 编辑
摘要: (1)inner join、left join、right join 之间的关系INNER JOIN只要在这两个表的公共字段之中有相符值,内部联接将组合两个表中的记录。注意:在一个 INNER JOIN 之中,可以嵌套 LEFT JOIN 或 RIGHT JOIN,但是在 LEFT JOIN 或 RIGHT JOIN 中不能嵌套 INNER JOINleft join它的全称为左外连接(left outer join),是外连接的一种,连接通常可以在select语句的from子句或where子句中建立,它是以联接关系中的左外的表为基准,右边的表如果没有数据,则以空值NULL填充。right j 阅读全文
posted @ 2012-04-18 00:07 xiepeixing 阅读(216) 评论(0) 推荐(0) 编辑