2016-07-25 61 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 + ")";