Запрос с несколькими значениями в столбце

У меня есть таблица вроде:

id name children 1 Roberto Michael,Dia 2 Maria John,Alex 3 Mary Alexandre,Diana 

Моя проблема; Я хочу найти, у кого есть ребенок по имени Алекс.

Я не могу использовать "where children = 'Alex'" в SQL, потому что у меня есть несколько имен в одних и тех же ячейках.

Поэтому я использую "where children LIKE '%Alex%'" – это выглядит умным, но в то же время я все начинаю как Alex 🙁 Alexandre или я хочу получить диагноз, но результат – dia и diana 🙁

как я могу получить одиночный Alex в этом типе данных?

Надеюсь, я могу объяснить свою проблему своим ужасным английским: D

Solutions Collecting From Web of "Запрос с несколькими значениями в столбце"

Лучшим решением будет нормализация вашей схемы. У вас должна быть отдельная таблица с одной строкой для каждого дочернего элемента вместо списка с разделителями-запятыми. Затем вы можете присоединиться к этой таблице, чтобы найти родителя с определенным дочерним элементом. См. Ответ @ themite для примера этого.

Но если вы не можете сделать это по какой-либо причине, вы можете использовать FIND_IN_SET :

 WHERE FIND_IN_SET('Alex', children) 

Вы должны разделить данные на две таблицы.

первый будет выглядеть так

 ID Name 1 Roberto 2 Maria 3 Mary 

И второй, как этот

 ParentId child 1 Michael 1 Dia 2 John 2 Alex 

и так далее.

то вы можете сделать запрос, который вы хотите, не беспокоясь о том, like и ваши данные гораздо более полезны

Вот почему вы хотите иметь две таблицы здесь.

 parents: id name 1 Roberto 2 Maria 3 Mary children: id parentid name 1 1 Michael 2 1 Dia 3 2 John 4 2 Alex 5 3 Alexandre 6 3 Diana 

И теперь вы можете запросить это гораздо более эффективно с помощью соединения или существующего:

 SELECT * FROM Parents WHERE EXISTS( SELECT * FROM Children WHERE parentid=Parents.id AND Children.name='Alex' ) 

Я предпочел бы сделать разные таблицы для детей и родителей примерно такими.

Стол для родителей

 parent_id name 1 Roberto 2 Maria 3 Mary 

Стол для детей

 children_id parent_id name 1 1 Michael 2 1 Dia 3 2 John 

…. и так далее