dqhnp44220 2013-01-29 01:58
浏览 20
已采纳

MySQL在文本中搜索行

in MySQL, I have a row for each user, with a column that contains friends names separated by .

eg.
Friend1
Friend2
Friend3

I'd like to be able to quickly search all the users where the Friends field contains Friend2.

I've found FIND_IN_SET but that only works for commas and the data can contains commas and foreign characters.

Obviously searching with regular expressions and the such will be slow. I'm new to the whole cross referencing so I'd love some help on the best way to structure the data so that it can be found quickly.

Thanks in advance.

Edit: Ok, I forgot to mention a point that the data is coming from a game where friends names are stored locally and there are no links to another users ID. Thus the strings. Every time they connect I am given a dump of their friends names which I use in the background to help match games.

  • 写回答

3条回答 默认 最新

  • duanfan5012 2013-01-29 02:03
    关注

    The most commonly used structure for this kind of data is usually adding an extra table. I.e.

    user
        id,
        name
        email,
        e.t.c.
    
    user_friend
        user_id
        friend_id
    

    Querying this is a matter of querying the tables. I.e.

    List all of a users friends names:

    SELECT friend_id
    FROM user_friend 
    WHERE user_id = :theUser
    

    Edit: Regarding OPs edit. Just storing the names is possible too. In this case the table structure would become:

    user_friend
        user_id
        friend_name
    

    and the query:

    SELECT friend_name 
    FROM user_friend 
    WHERE user_id = :theUser
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(2条)

报告相同问题?

悬赏问题

  • ¥15 在获取boss直聘的聊天的时候只能获取到前40条聊天数据
  • ¥20 关于URL获取的参数,无法执行二选一查询
  • ¥15 液位控制,当液位超过高限时常开触点59闭合,直到液位低于低限时,断开
  • ¥15 marlin编译错误,如何解决?
  • ¥15 有偿四位数,节约算法和扫描算法
  • ¥15 VUE项目怎么运行,系统打不开
  • ¥50 pointpillars等目标检测算法怎么融合注意力机制
  • ¥20 Vs code Mac系统 PHP Debug调试环境配置
  • ¥60 大一项目课,微信小程序
  • ¥15 求视频摘要youtube和ovp数据集