UPDATE запрос в MySQL

180
02 февраля 2020, 01:50

Есть две таблицы:

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
Answer 1
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

Увы, порядок в обновляемом поле не гарантируется (нет вменяемого материала для выражения сортировки).

не знаю как передать туда список нужных записей для фильтрации

Добавил условие отбора.

READ ALSO
Как вычленить часть текста из колонки в mySQL?

Как вычленить часть текста из колонки в mySQL?

У меня есть колонна varchar, в которой строки выглядят так:

204
Интеграция вайбер чат бота с Битрикс

Интеграция вайбер чат бота с Битрикс

Возникла следующая задача, нужно интегрировать вайбер бота в Битрикс чтобы он первым отвечал в открытых линияхЯ пересмотрел все в интернете,...

142