mysql联合查询数据重复_多表联合查询导致的数据重复问题
select id,like_count,favorite_count from message_message where id in(select message_id from message_message_tags where messagetag_id=62101) and (category=9 or category=1) order by (like_count+favorite_count) desc
原因是in子句的数据量大的话,性能就会非常低下。详见:
修改成多表查询:
select t1.sender_id,t1.id,t1.like_count,t1.favorite_count,t1.add_datetime from message_message t1, message_message2tag t2 where t1.id = t2.message_id and t2.tag_id=120560 and t1.category in (9,1) and t1.add_datetime>'2012-06-29' and t1.add_datetime < '2012-07-03' order by (like_count+favorite_count) desc limit 60
性能解决了,但发现有重复记录:
+----------+------------+----------------+-----------+---------------------+
| id | like_count | favorite_count | sender_id | add_datetime |
+----------+------------+----------------+-----------+---------------------+
| 33850491 | 2 | 220 | 471956 | 2012-06-29 20:42:47 |
| 33778187 | 14 | 167 | 122216 | 2012-06-29 12:24:15 |
| 33779339 | 8 | 165 | 122216 | 2012-06-29 12:33:57 |
| 34068745 | 0 | 112 | 3054 | 2012-07-01 15:00:26 |
| 33782239 | 4 | 94 | 116633 | 2012-06-29 12:58:23 |
| 33815718 | 2 | 92 | 4287 | 2012-06-29 17:10:13 |
| 33905850 | 3 | 87 | 85131 | 2012-06-30 10:36:39 |
| 33827272 | 1 | 75 | 171462 | 2012-06-29 18:21:31 |
| 33778798 | 7 | 69 | 122216 | 2012-06-29 12:29:38 |
| 33780283 | 8 | 64 | 122216 | 2012-06-29 12:42:15 |
| 33816638 | 0 | 59 | 4287 | 2012-06-29 17:16:16 |
122216一个会员发了多条记录,看来需要做distinct,直接把distinct加在字段前面是没有效果,可以通过结合子查询来和group来做,最终版:
select * from (select t1.sender_id,t1.id,t1.like_count,t1.favorite_count,t1.add_datetime from message_message t1, message_message2tag t2 where t1.id = t2.message_id and t2.tag_id=120560 and t1.category in (9,1) and t1.add_datetime>'2012-06-29' and t1.add_datetime < '2012-07-03' order by (like_count+favorite_count) desc limit 60) as t group by t.sender_id order by (like_count+favorite_count) desc;
这个人提到说通过
select *, count(distinct name) from table group by name来实现
http://hi.baidu.com/liveinyc/blog/item/facac543a2dc260b9213c658.html
分享到:
2012-07-04 16:03
浏览 18256
分类:数据库
评论
mysql联合查询数据重复_多表联合查询导致的数据重复问题相关推荐
- oracle表连接查询逗号隔开_Oracle多表连接查询
连接:将一张表中的行按照某种条件和另一张表中的行连接起来形成一个新行的的过程. 根据连接查询返回的结果,分为3类: 内连接(inner join) 外连接(outer join) 交叉连接(cross ...
- mysql 多表联查语句优化_?多表联合查询SQL语句优化
11.27 多表联合查询的优化方式,优化后的SQL及分析 优化方式: 1.尽量不用'*' 2.小表作驱动 3.大表建索引 原本SQL语句: select * from order left join ...
- 【MySQL笔记 第06章_多表查询】
第06章_多表查询 多表查询概述 1.一个案例引发的多表连接 1.1 案例说明 1.2 笛卡尔积(或交叉连接)的理解 演示代码 2. 多表查询分类讲解 分类1:等值连接 vs 非等值连接 等值连接 非 ...
- mysql多表查询分页面_mysql多表联合查询分点经验给大家
你的位置: 问答吧 -> MySQL -> 问题详情 mysql多表联合查询分点经验给大家 我在工作中天天研究zen cart的程序,那个叫人痛苦,最近比较痛苦的是经常碰见mysql多表联 ...
- 使用python对学生表的查询_多表组合查询——Python操作Mysql数据库
前面我们介绍了单张表的查询,包括模糊查询.分组.排序.各种筛选条件等等操作,在实际应用中,查询的数据往往不止局限在一张表里,通常需要多张表在一起进行组合查询,今天我们将会对Mysql当中的多张有关联的 ...
- mysql数据库访问300ms以上_[Java教程]一张900w的数据表,16s执行的SQL优化到300ms?...
[Java教程]一张900w的数据表,16s执行的SQL优化到300ms? 0 2020-11-20 16:00:16 一,前言 证实 有一张财务流水表,未分库分表,目前的数据量为9555695,分页 ...
- mysql查询含有某个值的表_MYSQL查询数据表中某个字段包含某个数值
当某个字段中字符串是"1,2,3,4,5,6"或者"123456" 查询数据表中某个字段是否包含某个值 1:模糊查询 使用like select * from ...
- mysql数据库实验查询_数据库表的查询操作(实验二)
[实验目的]:了解SQL语言的使用,进一步理解关系运算,巩固数据库的基础知识. [实验要求]:掌握利用Select语句进行各种查询操作:单表查询.多表连接及查询.嵌套查询.集合查询等. [实验内容] ...
- mysql情况数据库表数据函数_mysql数据库表单查询和函数的使用
单表查询 准备一张雇员表company.employee 雇员编号 emp_id int 雇员姓名 emp_name varchar(30) 雇员性别 sex enum 雇用日期 hire_d ...
最新文章
- 开发连接mysql_VC连接Mysql及开发详细指南
- 电脑下载python教程-python教程pdf下载
- x86 的 TSS 任务切换机制
- 韩顺平 mysql sqlhelper类_(最全)韩顺平jsp购物车源代码(包含数据库)
- rocketMq 顺序消费
- 编辑距离 在输入检测中的应用
- WordPress源代码研究-插件机制
- 谈谈如何正确的送领土
- cx_Oracle库导入失败引起crontab中python程序运行失败,并且无错误提示
- 孪生网络 Siamese Network
- ADOBE AIR 技术
- 计算机基础客户端v7,ComwareV7
- Transformer论文阅读(一):CoTr: Efficiently Bridging CNN and Transformer for 3D Medical Image Segmentation
- idea中加入插入当前系统日期快捷键
- 阿里巴巴 29 个屌炸天的开源项目!
- Elasticsearch 入门到精通-Elasticsearch创建索引
- 抽奖随机滚动_老板让我做年会抽奖系统,我用Excel制作内定抽到自己的大奖!...
- jupyter 更改主题 换成黑色背景
- 笔记本计算机屏幕亮度暗,笔记本屏幕100%还是暗,win10电脑亮度调节失灵
- js大屏导出图片_js将canvas保存成图片并下载