MySQL-mysql 某字段值(1,2,3,4,5),php数组(2,3),如何查询

发布于 2017-01-17 13:02:15 字数 108 浏览 1209 评论 4

mysql表中有一个字段,值格式为:“1,2,3,4,5”
php中的一个数组如:array(2,3),如何跟数据中的这个字段匹配至少有一个元素相同,求sql如何构造?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(4

夜无邪 2017-08-30 16:29:29

首先,你的mysql表建立的不规范,值为“1,2,3,4,5”的字段,应该新建一张表来存储这些值,创建新表:

CREATE TABLE `new_table_name` (
`id` INT(11) NOT NULL COMMENT '这字段为为这个表的外键连接到值“1,2,3,4,5”表的主键',
`value` VARCHAR(10) NOT NULL COMMENT '这字段存储以逗号分割的“1,2,3,4,5”'
);

然后使用in来查询:
$sql = "SELECT count(*) FROM new_table_name WHERE value IN (".implode ( ',' , array(2,3) ) .") AND id = '父id值'";

偏爱自由 2017-06-26 00:45:13

用PHP的数组取交集函数就可以了,array_intersect($arr1, $arr2);
1.先冲数据库将"1,2,3,4,5",取出来放在$str里
2.然后将取出来的字符串分割成数组 $arr1 = explode(',' $str);
然后取数组交集.
$arr2 = array(1,2,3);
print_r(array_intersect($arr1, $arr2));

想挽留 2017-03-04 10:02:23
SELECT * FROM table WHERE CONCAT(',', field, ',') REGEXP ",[23],"

其中 , 可以为任意分割符号,之前处理过有人用 | 做分割符的例子

晚风撩人 2017-01-18 02:46:47

表沒有不規範,這種情況應用也挺多的,舉個例子,就像文章具有多選的tag,如,最新,最熱,推薦 等分別對應1,2,3。具有多標籤的文章存儲格式按照逗號分隔。
那麼這時候,需要列出帶有某種標籤的文章時,通過find_in_set() 來查找,這個函數可以說是專門處理這種情況的。
比如需要取最熱,或推薦的文章(類似你的array(2,3))那麼sql可以為:

select ...... where find_in_set(2,字段) or find_in_set(3,字段)

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文