#mysql #sql #arrays #string #select
Вопрос:
Я думаю, что совершил большую ошибку, и я не могу понять, как это сделать:
У меня есть таблица со списком комнат и элементов столбца (varchar), содержащая список принятых идентификаторов участников, разделенных запятыми (например, 1,2,15,1000)
Мне нужно выбрать все комнаты, где идентификатор В строке участников. Есть идеи??? Что-то вроде
SELECT * FROM rooms WHERE id IN rooms.members
(Я знаю, что это не сработает, но надеюсь, я объяснился^^’)
РЕДАКТИРОВАТЬ
Мне нужно выполнить sql-запрос с PDO на PHP, я использую MySQL, и цель состоит в том, чтобы получить список всех строк, в которых идентификатор указан в строке списка участников
Комментарии:
1. Пожалуйста, укажите свою СУБД с версией.
2. я должен выполнить sql-запрос с помощью php, зачем вам нужна моя СУБД? в любом случае, это MySQL
3. Это MySQL 8 или любая более старая версия?
4. СУБД @Chris важна, потому что SQL зависит от поставщика (а иногда и от версии). Любой ответ должен будет учитывать вашу базу данных. Клиент (php здесь) — это то, что часто не имеет отношения к движку БД.
Ответ №1:
В MySQL вы можете использовать Find_in_set()
для выполнения своей работы:
ДБ-Скрипка:
create table test (id int, studentIDs varchar(50));
insert into test values(1,'1,2,3');
create table student (id int, name varchar(50));
insert into student values(1,'A');
insert into student values(2,'B');
Запрос:
select * from student where find_in_set(id,(select studentids from test))
Выход:
ID | Имя |
---|---|
1 | A |
2 | B |
бд<>скрипка <>здесь
Если вы используете sql server 2016 или выше, то можете использовать string_split()
ДБ-Скрипка:
create table test (id int, studentIDs varchar(50));
insert into test values(1,'1,2,3');
create table student (id int, name varchar(50));
insert into student values(1,'A');
insert into student values(2,'B');
Запрос:
select * from student where id in (select trim(value) from test cross apply string_split(studentids,','))
Выход:
ID | Имя |
---|---|
1 | A |
2 | B |
бд<>скрипка <>здесь
Комментарии:
1. я использую MySQL :/
2. @Chris Я добавил ответ для MySQL.
3. Я только что сам нашел решение благодаря вашим советам, и оно было таким же! Большой палец вверх для тебя!
4. Это просто здорово. Голосуйте за ваши усилия. Наилучшие пожелания.