mysql FIND_IN_SET方法的使用实例

以下是原来的查询方式:

$inviterUserExt = UserExt::findOne([‘user_id‘ => $inviteUser->id, ‘store_id‘ => $_storeId, ‘is_subscribe‘ => IS_SUBSCRIBE]);

if (!$inviterUserExt) {

$inviterUserExt = UserExt::findOne([‘user_id‘ => $inviteUser->id, ‘is_subscribe‘ => IS_SUBSCRIBE]);

}

因为查询了两次数据库,想减少一次查询,所以使用了find_in_set方法

$order = new Expression("FIND_IN_SET(`store_id`,{$_storeId}) DESC");

$inviterUserExt = UserExt::find()

->andWhere([‘user_id‘ => $inviteUser->id, ‘is_subscribe‘ => IS_SUBSCRIBE])

->orderBy($order)

->one();

使用find_in_set 将store_id等于当前值的记录排在最前面,如果查询不到那就查询其他的数据,最后得到符合结果的数据。

原文地址:https://www.cnblogs.com/liuqd001/p/11369164.html

时间: 2024-10-30 20:30:47

mysql FIND_IN_SET方法的使用实例的相关文章

Python使用MySQL数据库的方法以及一个实例

使用环境:Windows+python3.4+MySQL5.5+Navicat 一.创建连接 1.准备工作,想要使用Python操作MySQL,首先需要安装MySQL-Python的包,在Python 3.x下,该包已经改名为MySQLClient.可以使用pip方式安装: pip install MySQLClient 或者下载包文件,进行安装也可以. 2.Python使用MySQL的流程: 3.启动MySQL服务器:以管理员身份启动“cmd”,输入命令:’net start mysql‘ P

源码安装mysql5.6.20&&mysql主从设置(多实例做多个主从)

一.源码安装mysql5.6.20 1.编译环境安装 yum install wget gcc* make openssl openssl-devel openssl-clients -y && yum groupinstall "Development Libraries" -y 2.源码下载(软件见Linux部署源码包) wget -P /usr/local/src/ http://cdn.mysql.com/Downloads/MySQL-5.6/mysql-5.

QTP连接MYSQL数据库方法

1.首先安装mysql数据驱动,qtp在windows系统下操作连接mysql,所以下载mysql-connector-odbc-   5.1.8-win32.msi 下载地址:http://mysql.mirrors.pair.com/Downloads/Connector-ODBC/5.1/mysqlconnector-odbc-5.1.8-win32.msi 2.安装mysql驱动 ,默认安装即可. 3. 添加默认数据源 控制面板->管理工具->数据源ODBC->系统DNS->

mysql 登录方法

1.mysql <==刚装完系统无密码情况登录方式.不要密码 2.mysql -uroot  <== 刚装完系统无密码情况登录方式,不要密码. 3.mysql -uroot -p <==这 里标准的dba命令行登陆命令 4.mysql -uroot -p'123456' <==非脚本一般不棕样用,密码明文会泄露密码.可以掩饰history 功能解决. mysql多实例的登陆方法 mysql -uroot -p -S  /data/3306/mysql.sock 注意:多实例的远程连

MySQL管理之SQL语句实例

MySQL管理之SQL语句实例 首先,我们来导入world库,这个world库中的表是mysql ocp考试专用表,在网上有下 mysql> source/root/world_innodb.sql 表结构如下: 本文来自http://yijiu.blog.51cto.com 转载请经博主允许 ,盗帖可耻! CREATE TABLE `Country` (  `Code` char(3) NOT NULL DEFAULT '',  `Name` char(52) NOT NULL DEFAULT

MySQL搭建系列之多实例

所谓多实例,就是在一台服务器上搭建.运行多个MySQL实例,每个实例使用不同的服务端口,通过不同的socket监听:物理上,每个实例拥有独立的参数配置文件及数据库. 通常情况下,一台服务器是不建议运行多个MySQL实例的,尤其是生产环境,因为这会造成资源相互强占问题.但在一些高可用环境中,却有这样的需求,比如:利用Heartbeat搭建的故障转移集群环境,若主备服务器只运行一个MySQL实例,则备用服务器平常处于闲置状态,造成了资源浪费:若各自运行一个MySQL实例,则在一方故障时,要求另一方接

详细讲解安全升级MySQL的方法

MySQL升级是非常必要的. 我们在Percona Support上列出了关于MySQL升级最佳实践的各种问题.这篇文章推荐了一些不同情况下升级MySQL的方法. 为什么MySQL升级是必须的? 原因有很多,比如:为了使用新增的特性,基于性能方面的考量, 修复的bug. 但是在没有充分的测试以前就应用到你的应用中是非常危险的, 因为升级可以能会让你的应用不能正常运作- 也可能引起性能的问题. 此外, 我建议你关注MySQL的发布信息和Percona Server- 看看最近的版本有什么变化. 也

MySQL之体系结构与存储实例

定义数据库和实例 在数据库领域中有两个词很容易混淆,这就是"数据库"(database)和"实例"(instance).作为常见的数据库术语,这两个词的定义如下: 数据库:物理操作系统文件或其他形式文件类型的集合.在MySQL数据库中,数据库文件可以是fm.MYD.MYI.ibd结尾的文件.当使用NDB引擎时,数据库的文件可能不是操作系统上的文件,而是存放在内存之中的文件,但是定义仍然不变. 实例:MySQL数据库由后台线程以及一个共享内存区组成.共享内存可以被运行

基于mysqld_multi实现MySQL 5.7.24多实例多进程配置

MySQL多实例的原理 mysql多实例,简单理解就是在一台服务器上,mysql服务开启多个不同的端口(如3306.3307.3308)运行多个服务进程.这些 mysql 服务进程通过不同的 socket来监听不同的数据端口,进而互不干涉的提供各自的服务. 在同一台服务器上,mysql 多实例会去共用一套 mysql 应用程序,因此你在部署 mysql 的时候只需要部署一次mysql程序即可,无需多次部署.但是,mysql多实例之间会各自使用不同的 my.cnf配置文件.启动程序和数据文件.在提