Есть две таблицы:
table1
+---+------+
| a | b |
+---+------+
| | vvvv |
| | nnnn |
...
table2
+---+------+
| c | b |
+---+------+
| 1 | vvvv |
| 2 | vvvv |
| 3 | nnnn |
| 1 | nnnn |
| 4 | kkkk |
| 2 | kkkk |
...
Нужно сделать запрос, чтоб в итоге в table1 проапдейтились поля так:
table1
+-----+------+
| a | b |
+-----+------+
| 1,2 | vvvv |
| 3,1 | nnnn |
...
т.е. что-то на подобие
table1.a = GROUP_CONCAT(table2.c SEPARATOR ',') where table1.b LIKE table2.b group by table2.b
UPDATE table1, ( SELECT b, GROUP_CONCAT(c) d
FROM table2
-- WHERE b IN ('список', 'обновляемых', 'записей')
-- или (хуже, ибо фуллскан)
-- WHERE FIELD_IN_SET(b, 'список,обновляемых,записей')
GROUP BY b ) table3
SET table1.a = table3.d
WHERE table1.b = table3.b
Увы, порядок в обновляемом поле не гарантируется (нет вменяемого материала для выражения сортировки).
не знаю как передать туда список нужных записей для фильтрации
Добавил условие отбора.
Основные этапы разработки сайта для стоматологической клиники
Продвижение своими сайтами как стратегия роста и независимости