如何将一个复杂的mysql结果集,再筛选一次
2018-03-01 15:44
218 查看
通过下面的极其复杂的sql语句,如下
SELECT d.id AS uid,(SELECT paystudate_id FROM erp_demand_meter as b WHERE demand_id = d.id ORDER BY addtime DESC LIMIT 1) as pp,(SELECT uerdates FROM erp_demand_meter as b WHERE demand_id = d.id and b.paystudate_id = 14 ORDER BY addtime DESC LIMIT 1) as uerdat,
(SELECT plan_time FROM erp_demand_meter AS b where Demand_id = d.id ORDER BY addtime DESC limit 1) AS plan_time,
(SELECT addtime FROM erp_demand_meter WHERE Demand_id = d.id ORDER BY addtime DESC LIMIT 1) AS time ,
d.exec_name,d.paytime,d.paystudate,d.facttime,d.Demand_type_id,d. NAME,d.pid,d.addtime,d.company_type,d.demand_desc,d.pername,d.Demand_file_id, DATE_FORMAT(d.endtime, '%Y-%m-%d') AS edtime,d.state,d.perid,d.demand_level,d.demand_file,t.type_name,t.company_id,t.id
FROM erp_demand d LEFT JOIN erp_demand_type t ON d.demand_type_id = t.id
where d.paystudate = 0 and demand_type_id = 1
ORDER BY d.update_time desc,uid desc limit 0,20
我们得到了一个多集合的结果集,我们这次的任务是pp为NULL和0的筛选出来
用到:(1)IFNULL(expr1,expr2)的用法:假如expr1 不为 NULL,则 IFNULL() 的返回值为 expr1; (2)用select * from (结果集)as result where IFNULL(result.pp,0) = 0 【可以找出null,0】
如下:select * from
(SELECT d.id AS uid,(SELECT paystudate_id FROM erp_demand_meter as b WHERE demand_id = d.id ORDER BY addtime DESC LIMIT 1) as pp,
(SELECT uerdates FROM erp_demand_meter as b WHERE demand_id = d.id and b.paystudate_id = 14 ORDER BY addtime DESC LIMIT 1) as uerdat,
(SELECT plan_time FROM erp_demand_meter AS b where Demand_id = d.id ORDER BY addtime DESC limit 1) AS plan_time,
(SELECT addtime FROM erp_demand_meter WHERE Demand_id = d.id ORDER BY addtime DESC LIMIT 1) AS time ,
d.exec_name,d.paytime,d.paystudate,d.facttime,d.Demand_type_id,d. NAME,d.pid,d.addtime,d.company_type,d.demand_desc,d.pername,d.Demand_file_id, DATE_FORMAT(d.endtime, '%Y-%m-%d') AS edtime,d.state,d.perid,d.demand_level,d.demand_file,t.type_name,t.company_id,t.id
FROM erp_demand d LEFT JOIN erp_demand_type t ON d.demand_type_id = t.id
where d.paystudate = 0
ORDER BY d.update_time desc,uid desc)a where IFNULL(a.pp,0) = 0
现在筛选出来了
相关文章推荐
- 一个整型数组里除了一个数字之外,其他的数字都出现了两次。要求时间复杂度是O(n),空间复杂度是O(1),如何找出数组中只出现一次的数字
- 如何从数据库中查询出多个结果集或一个结果集
- 同表两个字段二选一查询mysql中如何判断某一个字段是否存在某一个值
- 安装ubuntu10.10后,如何配置一个Apache+MySQL+PHP环境
- 如何执行一个mysql的sql脚本文件
- 如何执行一个mysql的sql脚本文件
- 搭建了一个Apache+Php+MySQL的服务器。要如何通过Apache发布网站使得其他的电脑可以通过局域网访问?
- mysql用一个select 如何一次性统计多张表的行数,分别列出来
- mysql如何将一个表导出为excel表格
- mysql 用多次查询代替一次复杂join查询的优点分析
- 如何在MySQL中筛选全表扫描的SQL查询
- mysql 怎么给一个表一次增加多个字段, mysql 添加 多个 字段
- 分享一个mysql 复杂查询的例子
- 如何执行一个mysql的sql脚本文件
- Keras TensorFlow教程:如何从零开发一个复杂深度学习模型
- [MySQL FAQ]系列 -- 如何为一个字段指定字符集
- 如何利用一个FILE控件,一次上传多个附件到数据库
- 【转】如何遍历一个结果集在 SQL Server 中使用 Transact-SQL
- Keras TensorFlow教程:如何从零开发一个复杂深度学习模型
- 在jmeter测试mysql中如何一次运行多条sql语句