mysql distinct关键字在多个字段的情况下出现行为怪异的问题

我还是先把代码贴上来吧

select be.ua , u.`name`, be.time_stamp, uvv.fans_count, uvv.friends_count, uvv.attetion_count, uvv.longitude, uvv.latitude,
u.address_str, u.birthdate_stamp, u.emotion_role, u.personal_sign, u.personal_tags, u.constellation, u.logo_path, count(distinct be.ua)
 from laladb.bbs_events as be
left join laladb.user as u on be.ua = u.uid
left join laladb.user_variability_values as uvv on u.uid = uvv.uid
where be.type = 1 and be.`status` = 1 and be.things_type = 0 and be.things_id = 1 group by be.ua order by be.time_stamp desc limit 0,2

请注意count(distinct be.ua) 只有通过这种办法才能够让distinct正常将重复的ua去掉,还要配合group by be.ua才能生效,否则结果集只有一行。

查询到的结果会多一个名为count(distinct be.ua)的列,建议使用 as 关键字命名一个比较方便的比如dbu,然后在程序处理中将其unset掉。

作者:coder-sunyuw

出处:http://www.cnblogs.com/sunyuw/p/4205681.html

注:欢迎转载,但请保留作者和出处,谢谢

时间: 2024-10-09 20:23:39

mysql distinct关键字在多个字段的情况下出现行为怪异的问题的相关文章

C#关键字var是什么,在何种情况下使用

从.NET 3.0开始,在方法内部可以使用var关键字声明局部变量.var关键字到底是什么?在何种情况下使用呢? □ var关键字用来隐式地声明一个数据类型,变量类型是在编译期确定的,而不是在运行时确定的 声明一个var变量a,把整型数10赋值给a,接着把一个字符串赋值给变量a.运行发现报错:无法将类型string隐式转换为int. 这说明:用var声明一个变量时,虽然不是显式声明,但在编译期,已经确定了变量的类型. 通过反编译同样可以证明以上推断. →把a = "abc";这行代码去

centos6.5如何升级mysql(最小安装的情况下)

1.删除已经安装的mysql(已经确定安装过了,不确定就输入yum list installed | grep mysql看看) yum remove mysql mysql-server mysql-libs mysql-server;` yum -y remove mysql-libs.x86_64` find / -name mysql 将找到的相关东西全删掉,尤其是后缀为sock的文件所在的文件夹,不然安装新版本后可能不能重启 2.更新yum源 (这时候要是报错:You need to

mysql 去除重复 Select中DISTINCT关键字的用法

在使用mysql时,有时需要查询出某个字段不重复的记录,虽然mysql提供 有distinct这个关键字来过滤掉多余的重复记录只保留一条,但往往只用它来返回不重复记录的条数,而不是用它来返回不重记录的所有值.其原因是 distinct只能返回它的目标字段,而无法返回其它字段,这个问题让我困扰了很久,用distinct不能解决的话,我只有用二重循环查询来解决,而 这样对于一个数据量非常大的站来说,无疑是会直接影响到效率的.所以我花了很多时间来研究这个问题,网上也查不到解决方案,期间把容容拉来帮忙,

mysql distinct

mysql的DISTINCT的关键字有很多你想不到的用处1.在count 不重复的记录的时候能用到比如SELECT COUNT( DISTINCT id ) FROM tablename;就是计算talbebname表中id不同的记录有多少条 2,在需要返回记录不同的id的具体值的时候可以用比如SELECT DISTINCT id FROM tablename;返回talbebname表中不同的id的具体的值 3.上面的情况2对于需要返回mysql表中2列以上的结果时会有歧义比如SELECT D

Mysql explain分析SQL语句之字段属性说明

在 explain的帮助下,您就知道什么时候该给表添加索引,以使用索引来查找记录从而让select 运行更快.如果由于不恰当使用索引而引起一些问题的话,可以运行 analyze table来更新该表的统计信息,例如键的基数,它能帮您在优化方面做出更好的选择. explain 返回了一行记录,它包括了 select语句中用到的各个表的信息.这些表在结果中按照mysql即将执行的查询中读取的顺序列出来.mysql用一次扫描多次连接(single- sweep,multi-join)的方法来解决连接.

mysql索引优化及explain关键字段解释

一.explain关键字解释 1.id MySQL QueryOptimizer 选定的执行计划中查询的序列号,表示查询中执行select 子句或操作表的顺序.id 值越大优先级越高,越先被执行.id 相同,执行顺序由上至下. 2.select_type (1) SIMPLE 简单的 select 查询(不使用 union 及子查询). (2) PRIMARY 最外层的 select 查询. 如果两表存在则查询,则外层的表操作为PRIMARY,内层(子查询)的操作为SUBQUERY. 如果两表做

Oracle 实现 一个关键字 匹配多个 字段

有这么一个需求,满足只有一个输入框的条件下,支持不同数据列的搜索结果. 说白了,就是这个 输入框  既可以用来 搜索姓名,也可以搜索 年龄,地址等. 分析: 一般情况下,我们的一个输入框对应 数据库 的某一列信息的搜索,比如,要搜索姓名为 ‘李’ 姓开头的,那么对应的 sql 就是 where name like '李%' 但是,现在输入框有了不确定性,不知道用户到底会输入什么,导致我们后台的 sql 不知道该如何对应了, 比如,用户输入 18,很明显,用户是想搜索 年龄为 18 的用户,如果

深入理解Oracle中distinct关键字

distinct这个关键字来过滤掉多余的重复记录只保留一条,但往往只用它来返回不重复记录的条数,而不是用它来返回不重记录的所有值.其原因是distinct只有用二重循环查询来解决,而这样对于一个数据量非常大的站来说,无疑是会直接影响到效率的. distinct 会对返回的结果集进行排序,所以,最好和order by 结合使用,可以提高效率. 一.distinct 基本用法 1.用于单列  1 select distinct name from A  执行后结果如下: 2.作用于多列  1 sel

MySQL获取Schema表名和字段信息

MySQL获取Schema表名和字段信息 获取表名 select TABLE_NAME,TABLE_TYPE,ENGINE,TABLE_ROWS,TABLE_COMMENT,CREATE_TIME,UPDATE_TIME, CHECK_TIME from information_schema.TABLES where TABLE_SCHEMA='t_shop' ; 获取字段名 select COLUMN_NAME,DATA_TYPE,CHARACTER_MAXIMUM_LENGTH,IS_NUL