mysql中find_in_set函数很有意思,它的功能是查找以英文逗号隔开的值,我们可以将数据存储类似为1,2,3,4格式。今天我们就来看看在thinkphp中怎样正确地使用find_in_set函数进行数据查询。

在ThinkPHP中, 我们可以使用数组的形式组合查询条件,对于组装find_in_set时,可以有如下写法:

$map['_string']="FIND_IN_SET(1,tid)";//tid为表字段

还可以组合多个find_in_set查询一起使用:

$map['_string'] = "FIND_IN_SET(1,tid) OR FIND_IN_SET(2,tid) OR FIND_IN_SET(3,tid) OR FIND_IN_SET(4,tid)";

最后生成的sql语句如下所示:

SELECT `id`,`title`,`enname`,`futitle`,`picture`,`content` FROM `tp_content` WHERE `is_recover` = 0 AND `cityid` = 2
AND ( `cate_id` = '1' OR `cate_pid` = '1' ) AND ( FIND_IN_SET(1,tid) OR FIND_IN_SET(2,tid) OR FIND_IN_SET(3,tid) OR FIND_IN_SET(4,tid) )
ORDER BY add_time desc,id desc LIMIT 0,10

使用 FIND_IN_SET 可以省下用php切成数组然后在进行匹配的麻烦

mysql 使用 FIND_IN_SET 来查询数据的更多相关文章

  1. 4、MySQL 申明变量给查询数据编号

    摘自: https://www.cnblogs.com/qixuejia/archive/2010/12/21/1913203.html https://blog.csdn.net/arbben/ar ...

  2. 【MySQL】SELECT语句 - 查询数据

    第4章 检索数据 文章目录 第4章 检索数据 1.SELECT语句 2.检索单个列 3.检索多个列 4.检索所有列 5.检索不同的行 6.限制结果 7.使用完全限定的表名 8.小结 简单记录 - My ...

  3. mysql 根据日期进行查询数据,没有数据也要显示空

    写这篇博客主要是记录自己在对订单进行按日期查询时使用的一种查询的方法,这里的orders是订单表,你也可以改成别的什么表对于最终数据不会造成影响,除非你那个表的数据只有几条那样就会出现查不到日期的情况 ...

  4. PHP操作mysql数据库:[2]查询数据听语音

    本文主要详细讲解如何使用php语言,对mysql数据库进行查询.添加.删除.更新等操作. 工具/原料   Macromedia Dreamweaver 8 mysql数据库,php语言 一.前言   ...

  5. MySQL笔记(二)——查询数据

    数据库管理系统的一个最重要的功能就是数据查询,数据查询不应只是简单的查询数据库中存储的数据,还应该是根据需要对数据进行筛选,以及确定数据以什么样的格式显示.本篇笔记主要介绍单表查询,子查询,连接查询. ...

  6. php使用mysql和mysqli连接查询数据

    mysql: <?php $code = $_POST['code']; $status = ""; $success = ""; $scookies = ...

  7. MySQL关于根据日期查询数据的sql语句

    查询在某段日期之间的数据: select * from 数据表  where 时间字段名 BETWEEN '2016-02-01' AND '2016-02-05' 查询往前3个月的数据: selec ...

  8. mysql 从一个表查询数据插入另一个表或当前表

    mysql insert into 表明(uid,lng,lat) SELECT uuid,lng,lat FROM 表明

  9. mysql 根据日期时间查询数据

    mysql> select * from table1; +----------+------------+-----+---------------------+ | name_new | t ...

随机推荐

  1. 常见的media断点

    landscape mode是指宽度比高度宽的模式,也就是俗称的宽屏模式: portrait mode是指高度比宽度高的模式,也就是俗称的竖屏模式: /*#region SmartPhones */ ...

  2. checkpoint(sqlserver数据库检查点)

    关于检查点的解释:   出于性能方面的考虑,数据库引擎对内存(缓冲区缓存)中的数据库页进行修改,但在每次更改后不将这些页写入磁盘.相反,数据库引擎定期发出对每个数据库的检查点命令.“检查点”将当前内存 ...

  3. 成功解决:FutureWarning: Conversion of the second argument of issubdtype from `float` to `np.floating` is

    问题原因: 包内出错,是h5py包 解决思路: 执行如下操作: pip -- install h5py==2.8.0rc1 注意:如果执行pip install h5py==2.8.0rc1 成功话, ...

  4. Struts的学习-配置

    1.进入官网http://struts.apache.org/download.cgi#struts2513,这里为下载地址,(ps:struts-2.5.13-all版本). 2.将..\strut ...

  5. elasticsearch 概念

    elasticsearch 来源:https://baike.baidu.com/item/elasticsearch/3411206?fr=aladdin ElasticSearch是一个基于Luc ...

  6. Android开发最佳学习路线图(转)

    Android开发总体路线图:  基础学习——JavaSE:        很多朋友一上手就开始学习Android,似乎太着急了一些. Android应用程序开发是以Java语言为基础的,所以没有扎实 ...

  7. 描边时消除锯齿SetSmoothingMode

    SmoothingModeAntiAlias 指定消除锯齿的呈现. SmoothingModeDefault 指定默认模式. SmoothingModeHighQuality 指定高质量.低速度呈现. ...

  8. C++学习之【使用位操作符求素数分析】

    先放普通代码: #include <iostream> using namespace std; void getPrime_1() { const int MAXN = 100; boo ...

  9. c++11之100行实现简单线程池

    代码从github上拷的,写了一些理解,如有错误请指正 Threadpool.h #ifndef THREAD_POOL_H #define THREAD_POOL_H #include <ve ...

  10. Android笔记之 图片自由裁剪

    前言--项目中须要用到对用户头像的裁剪和上传功能.关于裁剪.一開始是想自己来做,可是认为这个东西应该谷歌有开发吧,于是一搜索官方文档.果然有.于是.就果断无耻地用了Android自带有关于照片的自由裁 ...