如何根据单表中用逗号分隔的id获取用户名

时间:2014-08-13 11:21:13

标签: php mysql

user_id   user_name        user_friend_list
1         dharmendra       2,3,4,5,6,7
2         jitendra         1,3,4,5,6,7
3         xyz              1,2,6,7 
4         pqr              1,3,4 

现在我想提取user_id&用户名基于user_friend_list id 6,即 它将返回1,2,3 user_id&用户名dharmendra jitendra和xyz。

我只是使用php的splite功能但它是如此复杂请提供我很好的快捷方法

谢谢&问候

3 个答案:

答案 0 :(得分:3)

您可以使用FIND_IN_SET()

select user_id, user_name
from your_table
where find_in_set(6, user_friend_list) > 0

但改变你的桌面设计实际上会更好。永远不要在一列中存储多个值!

答案 1 :(得分:0)

表格首先没有规范化问题存在的原因 你必须像这样或更好地打破这个表:)

表1 USER_ID
USER_NAME

表2 USER_ID
friend_id

表2将有一些冗余数据,但可以通过添加第三个表作为table1和table2之间的映射来删除

现在您可以使用以下查询来获取结果

从table1中选择user_id,user_name作为连接table2,作为a.user_id = b.user_id上的b,其中b.friend_id = 6;

答案 2 :(得分:-1)

“SELECT user_id,表格中的用户名WHERE user_id IN(2,3,4,5,6,7)”;