Я использую MySQL и у меня есть таблица членов с BLOB поле «Контакты», содержащий разделенные запятыми список идентификаторов другого пользователя:MySQL ВЫБРАТЬ IN следуют разделенные запятой поля
TABLE members:
id_member = 1
firstname = 'John'
contacts (BLOB) = '4,6,7,2,5'
Я хочу, чтобы получить все первые имена в списке контактов для отдельного пользователя с одним запросом. Я попытался следующие:
SELECT firstname from members WHERE id_member IN (SELECT contacts FROM members WHERE id_member = 1);
возвращает только одну строку, но когда я пытаюсь:
SELECT firstname from members WHERE id_member IN (4,6,7,2,5);
Он возвращает все имена из списка. Я могу использовать два запроса для достижения этого, но я подумал, что я бы дважды проверял, есть ли способ заставить его работать с одним простым, элегантным запросом.
Спасибо за чтение, любая помощь оценена. июль
Ваш ID цифровой и ваша блоб строка? – Jrod
Решением здесь является правильная нормализация базы данных с таблицей контактов, имеющей два столбца: 'id_member' и' id_contact', для которых на 'id_member' много строк. –
Да, Jrod, мой идентификатор INT, а blob - это строка. Спасибо за идею Майкл, но у меня есть запас для этого варианта, который я высказал в своем комментарии к ответу Тадмана. –