mysql教程查询语句_mysql-Mysql 查询语句怎么写?
开发市场调查业务,有一个调查问题表responses (一百万行), 是市场调查的原始数据,包含survey_id(调查表的类型列),response_no(被调查者列),interview_date(调查日期), question_label(问题列), value(回答列), section_unique_id(部门列)等。
每一行对应某个被调查者回答的一个问题和它的调查结果。一个被调查者一次会回答30个问题,所以会产生30行。
另有一个计算公式表 (40行), 是对调查结果的分析计算公式,这些公式都是sql语句。
根据计算公式,产生一个结果表results。
现在的问题是,要设计一些sql语句,调查有多少人的回答是类似如下这样的组合:
1. 回答问题Q1,答案是1或8或9
并且
2. 回答问题Q2,答案是1或8或9
并且
。。。。。。
最好能用group by section。
比如如下这个例子:
计算公式的说明是这样。
((Q2A = 1 OR Q2A = 8 OR Q2A = 9) AND (Q2B = 1 OR Q2B = 8 OR Q2B = 9) AND (Q2C = 1 OR Q2C = 8 OR Q2C = 9) AND (Q2D = 1 OR Q2D = 8 OR Q2D = 9) AND (Q2E = 1 OR Q2E = 8 OR Q2E = 9) AND (Q2F = 1 OR Q2F = 8 OR Q2F = 9) AND (Q2G = 1 OR Q2G = 8 OR Q2G = 9) AND (Q2H = 1 OR Q2H = 8 OR Q2H = 9) AND (Q2I = 1 OR Q2I = 8 OR Q2I = 9) AND (Q5 = 1 OR Q5 = 8 OR Q5 = 9) AND (Q6 = 1 OR Q6 = 8 OR Q6 = 9))
我现在写了这样一个mysql语句:
SELECT section_unique_id as "section_unique_id", COUNT(*) as "hit" FROM responses WHERE
question_label = "Q2A" AND value IN (1,8,9)
AND
(response_no, survey_id, interview_date) IN (SELECT DISTINCT response_no, survey_id, interview_date FROM responses WHERE question_label = "Q2B" AND value IN (1,8,9))
AND
(response_no, survey_id, interview_date) IN (SELECT DISTINCT response_no, survey_id, interview_date FROM responses WHERE question_label = "Q2C" AND value IN (1,8,9))
AND
(response_no, survey_id, interview_date) IN (SELECT DISTINCT response_no, survey_id, interview_date FROM responses WHERE question_label = "Q2D" AND value IN (1,8,9))
AND
(response_no, survey_id, interview_date) IN (SELECT DISTINCT response_no, survey_id, interview_date FROM responses WHERE question_label = "Q2E" AND value IN (1,8,9))
AND
(response_no, survey_id, interview_date) IN (SELECT DISTINCT response_no, survey_id, interview_date FROM responses WHERE question_label = "Q2F" AND value IN (1,8,9))
AND
(response_no, survey_id, interview_date) IN (SELECT DISTINCT response_no, survey_id, interview_date FROM responses WHERE question_label = "Q2G" AND value IN (1,8,9))
AND
(response_no, survey_id, interview_date) IN (SELECT DISTINCT response_no, survey_id, interview_date FROM responses WHERE question_label = "Q2H" AND value IN (1,8,9))
AND
(response_no, survey_id, interview_date) IN (SELECT DISTINCT response_no, survey_id, interview_date FROM responses WHERE question_label = "Q2I" AND value IN (1,8,9))
AND
(response_no, survey_id, interview_date) IN (SELECT DISTINCT response_no, survey_id, interview_date FROM responses WHERE question_label = "Q5" AND value IN (1,8,9))
AND
(response_no, survey_id, interview_date) IN (SELECT DISTINCT response_no, survey_id, interview_date FROM responses WHERE question_label = "Q6" AND value IN (1,8,9))
结果,运行一次,用了12秒,太慢了。
请教mysql高手,有没有办法能加快计算速度。
mysql教程查询语句_mysql-Mysql 查询语句怎么写?相关推荐
- [Mysql教程系列]介绍一下MySQL语句设计规范以及其他规范
点击上方"Coder编程",选择"置顶公众号" 技术文章第一时间送达! mysql.jpg 语句设计规范 1.使用预编译语句 只传参数,比传递SQL语句更高效 ...
- mysql获取查询策略语句_MySQL数据库查询性能优化策略
优化查询 使用Explain语句分析查询语句 Explain 用来分析 SELECT 查询语句,开发人员可以通过分析 Explain 结果来优化查询语句. 通过对查询语句的分析,可以了解查询语句的执行 ...
- mysql 关联查询慢_mysql慢查询语句分析总结
我们经常会接触到MySQL,也经常会遇到一些MySQL的性能问题.我们可以借助慢查询日志和explain命令初步分析出SQL语句存在的性能问题 通过SHOW FULL PROCESSLIST查看问题 ...
- mysql修改的值子查询语句_MySQL的SQL语句 - 数据操作语句(13)- 子查询(13)
子查询的限制 ● 通常,不能在子查询中修改表并从同一表中进行选择.例如,此限制适用于以下形式的语法: 1. DELETE FROM t WHERE ... (SELECT ... FROM t ... ...
- mysql去重复查询 性能_MySQL中distinct语句去查询重复记录及相关的性能讨论_MySQL...
在 MySQL 查询中,可能会包含重复值.这并不成问题,不过,有时您也许希望仅仅列出不同(distinct)的值. 关键词 DISTINCT 用于返回唯一不同的值,就是去重啦.用法也很简单: SELE ...
- mysql去重复查询 性能_MySQL中distinct语句去查询重复记录及相关的性能讨论
在 MySQL 查询中,可能会包含重复值.这并不成问题,不过,有时您也许希望仅仅列出不同(distinct)的值. 关键词 DISTINCT 用于返回唯一不同的值,就是去重啦.用法也很简单: SELE ...
- mysql 怎么查询慢sql语句_Mysql中 查询慢的 Sql语句的记录查找
Mysql中 查询慢的 Sql语句的记录查找 慢查询日志 slow_query_log,是用来记录查询比较慢的sql语句,通过查询日志来查找哪条sql语句比较慢,这样可以对比较慢的sql可以进行优化. ...
- mysql select 指定列_MySQL使用select语句查询指定表中指定列(字段)的数据
本文介绍mysql数据库中执行select查询语句,查询指定列的数据,即指定字段的数据. 再来回顾一下sql语句中的select语句的语法: select 语句的基本语法: select from w ...
- mysql 高级查询词_Mysql高级查询语句
Exists子查询 Exists的特点 1.在执行create或drop语句前,可以使用exists语句来判断数据库对象是否存在,返回值是true或false drop table if exists ...
- mysql php 缓存机制_mysql数据库查询缓存原理是什么
mysql数据库查询缓存原理是:1.缓存SELECT操作的结果集和SQL语句,key为sql,value为查询结果集:2.如果新的SELECT语句到了,以这个sql为key去缓存中查询,如果匹配,就把 ...
最新文章
- 工作?生活?快乐吗?
- iphone电池怎么保养_苹果iPhone手机怎么开启【优化电池充电】
- 区块链BaaS云服务(36)欧盟EBSI“使用场景”
- Tomcat配置问题解决方法
- Xcode4.5编译ffmpeg成功,过程说明
- 【Oracle经典】132个oracle热门精品资料——下载目录收藏 (转载)
- (林雷看来13):功能优先,发展和重建同步,业绩后
- Redis - 在电商购物车场景下的实战分析
- Unity Spine笔记
- 电子面单打印模板规格汇总-快递鸟
- 51单片机的汇编语言
- 基于SpringBoot和Vue的OA办公管理系统
- STM32F103_study56_The punctual atoms(STM32 PWM output experimental code analysis)
- 计算机数值怎么看大小,笔记本电脑尺寸怎么看_笔记本电脑尺寸查询
- IntelliJ IDEA 最新注册码(截止到2019年12月12日)
- C#几种读取文件的方式
- Ugui中使用Image完成动态连线
- 了解计算机的历史用英语怎么说,关于计算机发展历史的论文参考文献 计算机发展历史英语参考文献哪里找...
- OJ每日一练——爱跑步的师兄
- vue中 @scroll的使用
热门文章
- Linux命令解释之sed
- noi 7627 鸡蛋的硬度
- java swing 图片上加热点_外卖图片品牌全靠P,4元成本料理包加热后,平台上20元卖出...
- 全新安装2008操作系统和2008 server core核心安装
- DM6467T开发板领航——开发环境
- 全球通用头像gravatar介绍
- vue中v-model的使用
- [C++再学习系列] 具有链接的C++实体
- mysql 5.7基本优化_mysql5.7优化
- 请用旧版的 Scala-2.11 搭配 Spark-2.4.8 / hadoop-2.7