2016-11-13 5 views
-1

質問があります。私はユーザーテーブルがあり、列名がfreindsである場合。 私はこの値を持つ列の友人の中にいくつかのユーザーIDを使いたい:1 | 2 | 45 | 18。 これは、例えば、ユーザーid = 5には、これらのIDが1 | 2 | 45 | 18の4つのフレンドがあることを意味します。 この状況では2つのテーブルを使いたくありません。列データにデリミタが含まれている場合、チェックでMySQLで行を選択する方法

ユーザーIDが5の友人の場合、どのように各ユーザーのデータを選択できますか? 私たちは各delimeterをスライスするための関数を持っています。 このターゲットの区切り文字を設定することはできますか、MySQLでは2つのテーブルユーザとフレンズを使用する必要がありますか?

+1

を、これは素晴らしく、理論的には簡単ですが、悪夢実際に作業する。痛みを伴いますが、正しい方法は正規化を使用することです - この場合、関係ごとに1行の 'userID'と' friendID'カラムを持つ 'friends'テーブルを持つことです –

+0

グーグルリング' mysql friends table '、彼らは多くの情報とアイデアを持っています。 http://stackoverflow.com/questions/3009190/mysql-friends-table –

+0

リレーショナルデータベースを使用しない場合は、リレーショナルデータベースを使用しないでください。 – Strawberry

答えて

1

それはあなたがそのような方式で、いくつかのDBを継承する場合は特に、ひどい場合だが、あなたが使用できる友人を見つけるために:あなたが実現されると

SELECT friend.* 
FROM user u 
left join user friend on concat('|', o.friends, '|') like concat('%|', friend.id, '|%') 

where u.id = 5; 
関連する問題