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查询-如何使用包含?的主要内容,如果未能解决你的问题,请参考以下文章