1

ユーザーの詳細を比較する必要があるため、他のユーザーの詳細と一致するユーザーの詳細を検索する必要がある検索モジュールを作成しています。などの詳細についてはagegender使用like '%search_term%'して、必要な結果を得ることができましたが、ユーザー 1 が話すなどの詳細のクエリを作成できないためenglish,french,spanish、同じマークアップとしてコンマで区切られた単語のようにデータベースに保存されます。そして、他のユーザーが共通の言語を1つだけ持っていると仮定します。latin,hindi,frenchつまり、フランス語が共通である場合、ユーザー1の詳細に従ってそのユーザーもフィルタリングする方法は、彼/彼女にはまだ共通点があります。次のクエリは、年齢などの通常の値用です

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

これを使用してそのクエリを作成しAND、結果を取得する方法は?

4

1 に答える 1

3

自己結合を行い、そのうちの 1 つのコンマをパイプに置き換えてから、その正規表現を 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 に答える