У меня есть набор базы данных, которая выглядит примерно такMySQL FIND_IN_SET() с запятой вместо запятой-х
Table: Notes
nid | forDepts
--------------
1 | 1;2;4
2 | 4;5
Table: Positions
id | name
--------------
1 | Executive
2 | Corp Admin
3 | Sales
4 | Art
5 | Marketing
Этот запрос будет работать, если данные в forDepts
был разделен запятая-х
SELECT a.nid,
GROUP_CONCAT(b.name ORDER BY b.id) DepartmentName
FROM Notes a
INNER JOIN Positions b
ON FIND_IN_SET(b.id, a.forDepts) > 0
GROUP BY a.nid
есть ли способ сопоставить его с разделителем с запятой? Или есть лучший способ сделать это? Обе мои таблицы довольно большие (5336 и 930 строк).
Я мог сделать 2 запроса и взорваться на ;
и соответствующим образом соответствовать, но если есть лучший способ, который можно сделать в одном запросе, это было бы здорово.
Вот мой sqlfiddle
Вместо того, чтобы искать решения по этому вопросу, вы должны действительно избавиться от значений, разделенных запятой в столбце. Читайте о нормализации. У вас будет больше проблем с этим дизайном схемы. – fancyPants