2016-07-25 60 views
0

在我的表格中,名为group_members_id的列包含012个用户的userid。 我一直想弄清楚,如果给定的userid匹配这10个userid中的任何一个,我可以使用MySQL查询该行的详细信息。Mysql查询 - 如何使用包含?

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

此代码无效。谁能帮我?

+0

可能重复http://stackoverflow.com/questions/6121630/如何写入mysql-query-where-a-contain-a-or-b – rokas

+0

只是为了分类,您试图从具有group_members_id = xyz的SQL表中提取记录,并且在字段group_members_id中有一个记录像{1},{2},{3},{4} ...等的列表? – user3750649

+0

您可以使用find_in_set。 –

回答

2

你可以得到这样

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

使用like条款

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

首次使用时,总是使用group_member_id作为foregin ID,并作为INT。

其次,从不使用整数值作为字符串。这将有助于像排序等

第三等功能,如果您有存储整数值如下表字符串,那么你可以使用如下:

1)使用LIKE条款关键字,并沿百分之字符串

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

2)如果你正在寻找串的更复杂的组合比你在你的例子中指定的迹象,你可能正则表达式(正则表达式): 见MySQL手册更多关于如何使用它们:http://dev.mysql.com/doc/refman/5.1/en/regexp.html

1

考虑到所有的用户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 + ")";