mysql if对数据进行处理 having对数据进行查询 thinkphp中的exp支持更复杂的where查询

本文涉及的产品
云数据库 RDS MySQL Serverless,0.5-2RCU 50GB
简介:

很多时候,数据库获取的信息并不是我们最终想要的,需要通过if进行处理。

where支持查询

having支持后查询(查询后的数据,再筛选)

代码如下:

复制代码
if ($this->_post('dosearch','isset')) { // 搜索
            if ($s_name = $this->_post('s_name','isset')) {
                $where['a.name'] = array('like','%'.$s_name.'%');
                $this->assign('s_name',$s_name);
            }

            if ($s_category = $this->_post('s_category','isset')) {
                $where['a.category_id'] = $s_category;
                $this->assign('s_category',$s_category);
            }

            if ($s_status = $this->_post('s_status','isset')) {
                $having ='status ='.$s_status; // 只支持字符串
                $this->assign('s_status',$s_status);
            }
        }
复制代码

if

复制代码
// 获取商铺
        $subQuery = M('User')->where(array('agent_id'=>$this->agent_id,'status'=>1))
                             ->field('id')
                             ->select(false);
        $where['a.user_id'] = array('exp','in '.$subQuery);
        $where['a.status'] = 1;
        $list       = M()->table('sh_store a')
                    ->join('sh_goods b on a.id = b.store_id')
                    ->join('sh_category c on a.category_id = c.id')
                    ->join('sh_mall_shop d on a.id = d.store_id and d.mall_id = '.$this->mall['id'])
                    ->where($where)
                    ->group('a.id')
                    ->having($having)
                    ->field('a.id as store_id,a.user_id,a.name as store_name,c.name as category_name,a.logo,count(b.id) as goods_count,if(d.id > 0,"1","2") as status')
                    ->select();
        $this->assign('list',$list);
复制代码

sql原句如下:

SELECT a.id as store_id,a.user_id,a.name as store_name,c.name as category_name,a.logo,count(b.id) as goods_count,if(d.id > 0,"1","2") as status FROM sh_store a LEFT JOIN sh_goods b on a.id = b.store_id LEFT JOIN sh_category c on a.category_id = c.id LEFT JOIN sh_mall_shop d on a.id = d.store_id and d.mall_id = 9 WHERE ( a.category_id = '47' ) AND ( (a.user_id in ( SELECT `id` FROM `sh_user` WHERE ( `agent_id` = 13 ) AND ( `status` = 1 ) )) ) AND ( a.status = 1 ) GROUP BY a.id HAVING status =1 


 
相关实践学习
基于CentOS快速搭建LAMP环境
本教程介绍如何搭建LAMP环境,其中LAMP分别代表Linux、Apache、MySQL和PHP。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助     相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
相关文章
|
3月前
|
SQL 关系型数据库 MySQL
在云数据仓库AnalyticDB MySQL版中,有几个参数可能影响SELECT查询的执行及其稳定性
在云数据仓库AnalyticDB MySQL版中,有几个参数可能影响SELECT查询的执行及其稳定性【1月更文挑战第16天】【1月更文挑战第80篇】
290 4
|
SQL 弹性计算 关系型数据库
HTAP数据库 PostgreSQL 场景与性能测试之 3.1 - (OLAP) 大表JOIN统计查询-10亿 join 1亿 agg
标签 PostgreSQL , HTAP , OLTP , OLAP , 场景与性能测试 背景 PostgreSQL是一个历史悠久的数据库,历史可以追溯到1973年,最早由2014计算机图灵奖得主,关系数据库的鼻祖Michael_Stonebraker 操刀设计,PostgreSQL具备与Oracle类似的功能、性能、架构以及稳定性。 PostgreSQL社区的贡献者众多
1810 0
|
7月前
|
SQL 数据库管理
逻辑数仓执行SQL查询时
逻辑数仓执行SQL查询时
46 1
|
7月前
|
弹性计算 关系型数据库 OLAP
AnalyticDB PostgreSQL版向量索引查询
本案例对比了传统查询和使用向量索引执行查询的执行时间,助您体验使用向量索引查询带来的高效和快捷。
781 0
|
11月前
|
存储 关系型数据库 MySQL
《阿里云认证的解析与实战-数据仓库ACP认证》——功能演示一:实现AnalyticDB MySQL版弹性能力——七、导入数据并查询
《阿里云认证的解析与实战-数据仓库ACP认证》——功能演示一:实现AnalyticDB MySQL版弹性能力——七、导入数据并查询
|
11月前
|
SQL Cloud Native 关系型数据库
《阿里云认证的解析与实战-数据仓库ACP认证》——云原生数据仓库AnalyticDB PostgreSQL版功能演示(上)——五、执行SQL查询
《阿里云认证的解析与实战-数据仓库ACP认证》——云原生数据仓库AnalyticDB PostgreSQL版功能演示(上)——五、执行SQL查询
|
12月前
|
SQL 分布式计算 运维
2023云数据库技术沙龙|ByteHouse云数仓版查询性能优化和MySQL生态完善
在2023云数据库技术沙龙 “MySQL x ClickHouse” 专场上,火山引擎ByteHouse的研发工程师游致远,为大家分享一下《ByteHouse云数仓版查询优化和MySQL生态完善》的一些工作。
164 0
|
运维 Cloud Native 关系型数据库
今日14点开播!云原生AnalyticDB MySQL湖仓版如何支撑「DAS」高吞吐入湖和高性能查询
《数据库风向标》是一档聚焦数据库新趋势与新技术的视频栏目,节目每期会请到几位资深技术大咖,与大家共话数据库热点话题。
今日14点开播!云原生AnalyticDB MySQL湖仓版如何支撑「DAS」高吞吐入湖和高性能查询
|
SQL 关系型数据库 MySQL
《叶问》31期,MySQL中如何查询某个表上的IS(意向共享)锁
《叶问》31期,MySQL中如何查询某个表上的IS(意向共享)锁
《叶问》31期,MySQL中如何查询某个表上的IS(意向共享)锁
|
存储 分布式计算 Cloud Native
干货 | 云原生数仓如何破解大规模集群的关联查询性能问题?
近年来,数据库系统服务的数据量呈指数级增长,同时也面临处理的业务需求愈发复杂、实时性要求越来越高等挑战。单机数据库系统已经逐渐不能满足现代的数据库服务要求,因此分布式数据库/数据仓库得到了越来越广泛地运用。
285 0

热门文章

最新文章