2015-11-24 65 views
1
Table name: `team` 
Column name: `team_members` 
Column value1: 1,72,34 //these are userids [Row1] 
Column value2: 72,38 [Row2] 
Column value2: 10,3 [Row3] 

現在我想匹配登錄用戶的ID是否存在於team_members中。SQL:使用IN子句搜索列值

對於這一點,我火了如下的查詢:

<?php 
$loginuserid = 72; 
$query = 'SELECT * FROM `team` WHERE `team_members` IN ("'.$loginuserid.'")'; 
?> 

預期結果:

It must return 2 rows: 1 and 2 

但它不是這樣工作。它只返回row1。

請提出解決方案。

+2

http://stackoverflow.com/questions/5033047/mysql-query-finding-values-in-a-comma-分隔字符串 –

+0

從這段代碼看起來它甚至不會返回row1。你將不得不使用通配符%前後,因爲你不想要完全匹配,並且還有其他值 – Spidey

+0

@Nimesh我使用LIKE子句使用%,但是當字符串包含像723這樣的數字時,它也會返回一行。這就是爲什麼我嘗試使用IN子句 –

回答

1

我按照建議使用FIND_IN_SET()找到解決方案。謝謝! 以下是這解決了我的問題查詢:

SELECT * FROM `team` WHERE FIND_IN_SET('72',`team_members`) 

結果: This returns : row1 and row2

+0

您可以接受您的回答,以便將問題標記爲已解決。也因爲這是MySQL我建議標記是適當的。 – Spidey

+0

您在此處使用產品特定的功能,並且在問題中未指定dbms。至少通知哪個dbms產品適用於此目的。 – jarlh

+0

@Nimesh我已經嘗試接受它之前,但它給了我,我可以接受我的答案後2天:( –