mysql 使用 FIND_IN_SET 来查询数据

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切成数组然后在进行匹配的麻烦

原文地址:https://www.cnblogs.com/dywangzq/p/9305802.html

时间: 2024-11-10 22:29:40

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

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

mysql: <?php $code = $_POST['code']; $status = ""; $success = ""; $scookies = ""; try { $dbname="root"; $dbpass="root"; $dbhost="127.0.0.1"; $dbdatabase="mysql"; //生成一个连接 $db_connect

MySQL(三)---使用DQL查询数据

SELECT语句 查询表中所有的数据列结果 , 采用 " * " 符号 SELECT * FROM student; #查询student表中的所有数据 #但是效率低 AS子句作为别名:AS子句作用 1:可给数据列取一个新别名 2:可给表去一个新别名 3:可把经计算或总结的结果用另一个新名称来代替 # 这里是为列取别名(当然as关键词可以省略) SELECT studentno AS 学号,studentname AS 姓名 FROM student; # 使用as也可以为表取别名 S

mysql 多次分组查询 数据最大的一行

SELECT B, D, Max(E)FROM `总表`WHERE B = '张士建'GROUP BY B, D 通过查询创建工具 编写查询语句 原文地址:https://www.cnblogs.com/gaidalou/p/10412083.html

mysql中的 IN和FIND_IN_SET的查询问题

原来以为mysql可以进行这样的查询select id, list, name from table where 'daodao' IN (list);      (一)注:1. table含有三个字段id:int,  list:varchar(255),  name:varchar(255) 实际上这样是不行的,这样只有当'daodao'是list中的第一个元素(我测试的时候貌似是第一个也是不行的,只有当list字段的值等于daodao时才是对的)时,查询才有效,否则都的不到结果,即使'dao

MySQL查询数据表中数据记录(包括多表查询)

MySQL查询数据表中数据记录(包括多表查询) MySQL查询数据表中数据记录(包括多表查询) 转自:http://www.baike369.com/content/?id=5355 在MySQL中创建数据库的目的是为了使用其中的数据. 使用select查询语句可以从数据库中把数据查询出来. select语句的语法格式如下: select selection_list // 要查询的内容,选择哪些列 from table_list // 从什么表中查询,从何处选择行 where primary_

解决mysql控制台查询数据乱码的问题,有图有真相

在mysql  控制台当 当为gbk的时候查询的数据是汉字,假设不是则为乱码.  set  names  gbk;  那么查询出来的数据则为汉字 解决mysql控制台查询数据乱码的问题,有图有真相,布布扣,bubuko.com

mySQL教程 第4章 数据查询

第4章 数据查询 mySQL运算符 这些运算符在SQL查询中用得到. 算数运算符 + 加 - 减 * 乘 / DIV 除 % MOD 取余数 比较运算符 = 等于 <> != 不等于 < <= > >= Between 指定范围 In 存在于集合 Is null 为NULL Is not null 不为空 Like 通配符 Regexp rlike 正则表达式 比如 比较运算符,返回的结果 真为1,假为0 运算符优先级 最高-----------------------

转 mysql 中sql 语句查询今天、昨天、7天、近30天、本月、上一月 数据

转自 http://blog.csdn.net/ve_love/article/details/19685399 转 mysql 中sql 语句查询今天.昨天.7天.近30天.本月.上一月 数据

MySQL 查询数据

mysql> select * from test; +----+--------+ | id | name | +----+--------+ | 1 | apple | | 2 | banana | | 3 | cherry | | 4 | apple | | 5 | banana | | 6 | cherry | +----+--------+ mysql> select * from test; # 查询所有数据 mysql> select id,name from test;