Поле обновления MySQL в строке, если оно не содержит значения - PullRequest
0 голосов
/ 07 октября 2018

У меня есть таблица с разделенным запятыми списком (в форме VARCHAR), которую я хочу обновить, если идентификатор пользователя в этом списке не существует.

Я выполняю инструкциюиз приложения Node.js.Я не совсем уверен, как бы я это сделал с помощью оператора SQL.Вот что у меня есть:

'UPDATE `tablename` SET `t` = "' + memberId + '" WHERE rowId = ' + id

Это заменит всю запись.Я только хочу ДОБАВИТЬ memberId к t, если он не существует.

t выглядит примерно так: '1652,47,245,783,2,3,55,738,2306';

Так что, если бы я хотел добавить 15 к этому, это должно быть '1652,47,245,783,2,3,55,738,2306,15';

Я хочу сделать это в операторе SQL, вместо того, чтобы извлекать данные поля и затем добавлять их в строку в JavaScript (Node.js), а затем обновлять запись.

1 Ответ

0 голосов
/ 07 октября 2018

Используйте FIND_IN_SET, чтобы проанализировать строковое значение и определить, присутствует ли идентификатор в этом списке, разделенном запятыми.

См. Полные документы по FIND_IN_SET здесь:

https://dev.mysql.com/doc/refman/8.0/en/string-functions.html#function_find-in-set

Псевдо-запрос будет выглядеть следующим образом:

UPDATE `tablename` SET `t` = CONCAT(t, ',15) 
WHERE rowId = ${rowId} AND FIND_IN_SET('15', t) = 0

Конечно, интерполируйте ${rowId} по мере необходимости для построения вашего запроса.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...