Рассмотрим таблицу задачиПоиск идентификаторов в разделенных запятыми строку с входом, разделенных запятыми
id | assigned_to | viewers
1 100 100,200,300
2 200 125,200,310
3 300 175,250,300
4 400 400,440,670
5 500 500,111,333
я буду получать входную строку, которая может содержать более 1000 значений, разделенных запятыми, как
1,2,3,4,5,6,7,8,,,,100,,,,500,,,,1000
Я хочу получить все строки из таблицы, соответствующие «assign_to» или «зрителей» со строки ввода ING. Я попытался с IN() для "assigned_to",
SELECT * FROM tasks WHERE assign_to IN ($inputString)
но не мог получить какое-либо решение в соответствии с колонкой "зрителей".
Есть ли способ сопоставления строки, разделенной запятыми, с другой разделенной запятой строкой?
Заранее спасибо
NORMALIZE ваша база данных –
эта задача была бы намного проще, если бы вы могли реорганизовать структуру своей базы данных: наличие «нескольких значений в одном столбце одной строки» в «реляционной базе данных» обычно считается плохой практикой; 'зрители' должны действительно находиться в отдельной таблице и ссылаться только через внешний ключ; которая представила бы новую таблицу «TaskViewers», которая имеет только два столбца «TaskId» и «ViewerId», затем вы можете присоединиться к этой таблице с этой таблицей задач, как «задачи SELECT». FROM tasks INNER JOIN taskviewers ON tasks.id = taskviewers.taskid WHERE tasks.assign_to IN ($ inputString) ИЛИ taskviewers.viewerid IN ($ inputString) ' – DrCopyPaste
mysql FIND_IN_SET –