Mysql查询-如何使用包含?

Posted

技术标签:

【中文标题】Mysql查询-如何使用包含?【英文标题】:Mysql query- How to use contains? 【发布时间】:2016-11-28 13:12:07 【问题描述】:

在我的表中,名为 group_members_id 的列包含 10 个用户的 userid。 我一直试图弄清楚如果给定userid 与这10 个用户ID 中的任何一个匹配,我如何使用mysql 进行查询以获取该行的详细信息。

"SELECT * FROM `table` WHERE `group_members_id`.contains('$userid')".

此代码不起作用。谁能帮我?

【问题讨论】:

可能重复***.com/questions/6121630/… 只是为了分类,您正试图从 SQL 表中提取 group_members_id = xyz 的记录,并且在 group_members_id 字段中有一个类似 1、2、3 的列表, 4...等等?? 你可以使用 find_in_set。 【参考方案1】:

你可以这样使用

"SELECT *
FROM `table`
WHERE `group_members_id` LIKE '%$userid%'"

【讨论】:

【参考方案2】:

使用like 子句

"SELECT * FROM table WHERE group_members_id LIKE '%$userid%'";

【讨论】:

【参考方案3】:

考虑到所有用户 ID 都是 INT 类型:

<?php
//$aUserIds is an array of  your User Ids.
$userIds = implode(",", $aUserIds);
$sQuery  = "SELECT * FROM table WHERE group_members_id IN (" +  $uSerIds + ")";

或者,如果它们是字符串类型,则使用:

$userIds = implode(",", $aUserIds);
$sUserIds = "";
foreach($userId as $userIds)

   $sUserIds += "'" + userId + "'";

$sQuery  = "SELECT * FROM table WHERE group_members_id IN (" +  $sUserIds + ")";

【讨论】:

【参考方案4】:

首先,始终使用 group_member_id 作为foregin id 并将其设为 int。

其次,永远不要使用整数值作为字符串。它将有助于其他功能,如排序等。

第三,如果你已经将整数值作为字符串存储在表中,那么你可以使用如下:

1.) 在字符串中使用LIKE Clause 关键字以及百分号

"SELECT * FROM table WHERE group_members_id LIKE '%$userid%'";

2.) 如果您正在寻找比您在示例中指定的更复杂的字符串组合,您可以使用正则表达式 (regex): 有关如何使用它们的更多信息,请参阅 MySQL 手册:http://dev.mysql.com/doc/refman/5.1/en/regexp.html

【讨论】:

以上是关于Mysql查询-如何使用包含?的主要内容,如果未能解决你的问题,请参考以下文章

MySQL - 如何按值在 IN 语句中使用子查询

在 PHP 中,如何创建包含引号和撇号的 mySQL 选择查询?

如何在 MySQL 中使用外键进行查询?

如何使用表值来驱动使用 PHP 的 mySQL 查询

如何让函数等到变量'rows'包含mysql查询的结果?

Mysql查找如何判断字段是不是包含某个字符串