массив в MySQL

Я хочу сохранить массив в записи.

Таблица 1:

 ID, имя, друзья (друзья должны быть массивом)
 1, Билл, 2 и 3
 2, Чарльз, 1 и 3
 3, Клэр, 1

Я хочу иметь возможность выполнить поиск следующим образом:

 SELECT * FROM Table1 WHERE Friends = '3'

найти всех, у кого есть Клэр, в списке друзей

Если у вас нет действительно веских оснований для этого, вы должны поддерживать нормализацию данных и сохранять отношения в другой таблице. Я думаю, что, возможно, вы ищете следующее:

CREATE TABLE people ( id int not null auto_increment, name varchar(250) not null, primary key(id) ); CREATE TABLE friendships ( id int not null auto_increment, user_id int not null, friend_id int not null, primary key(id) ); INSERT INTO people (name) VALUES ('Bill'),('Charles'),('Clare'); INSERT INTO friendships (user_id, friend_id) VALUES (1,3), (2,3); SELECT * FROM people p INNER JOIN friendships f ON f.user_id = p.id WHERE f.friend_id = 3; 
 + ---- + --------- + ---- + --------- + ----------- +
 |  id |  имя |  id |  user_id |  friend_id |
 + ---- + --------- + ---- + --------- + ----------- +
 |  1 |  Билл |  1 |  1 |  3 |
 |  2 |  Чарльз |  2 |  2 |  3 |
 + ---- + --------- + ---- + --------- + ----------- +
 2 ряда в наборе (0,00 сек)

Это выглядит как идеальное место для таблицы отношений: Таблица 1:

 ID, Name 1, Bill 2, Charles 3, Clare 

Таблица 2 (таблица отношений)

 ID, FriendID 1, 2 1, 3 2, 1 2, 3 3, 1 

Вторая таблица отслеживает отношения друзей, подключая идентификаторы из Таблицы 1.

Возможно, вам понадобится значение, разделенное запятыми, но это не рекомендуется. Почему бы не использовать другую таблицу для показа отношений?

 Table2 ---------------------- PARENT_ID | FRIEND_ID ---------------------- 1 | 2 1 | 3 2 | 1 2 | 3 ----------------------