1

我正在制作一个搜索模块,我需要在其中搜索与其他用户的详细信息相匹配的用户详细信息,因为我需要比较用户详细信息。对于诸如等之类的详细信息agegender我已经使用like '%search_term%'并且能够获得我想要的结果,但我无法查询用户 1 所说的详细信息,english,french,spanish因此它存储在数据库中,就像用逗号分隔的单词一样作为相同的标记。并假设其他用户只有一种共同语言,latin,hindi,french即共同法语,那么如何根据用户 1 的详细信息过滤该用户,因为他/她仍然有一些共同点。以下查询适用于年龄等正常值

select * from users_profile 
where age like '%$search_term%' 
order by created_time DESC

如何在这个查询中使用AND并获得结果?

4

1 回答 1

3

您可以进行自联接,然后用管道替换其中一个中的逗号,然后将该正则表达式与 rlike 一起使用。性能可能很糟糕。

select users_profile.*, users_profile2.id as other_id, 
  users_profile2.language as other_lang from users_profile
  inner join users_profile as users_profile2 on
    users_profile.language rlike 
      replace(users_profile2.language,",","|") 
    and users_profile.id != users_profile2.id;

你可以自己看看: http ://sqlfiddle.com/#!2/9549f/6

于 2013-05-15T09:03:21.300 回答