SQL Удалить записи в цикле - PullRequest
0 голосов
/ 25 февраля 2020

Я хочу l oop через список разделенных запятыми идентификаторов и удалить их один за другим в mysql. как то так: -

Begin
for idToDelete in (113,114) LOOP
delete from `myTable`
where `ID`=idToDelete;
END LOOP;
END;

Как я могу заставить эту работу работать? вещь не работает.

Ответы [ 2 ]

1 голос
/ 25 февраля 2020

Если ваш CSV-список передается в запрос в качестве параметра - однострочный литерал, тогда используйте

DELETE 
FROM myTable
WHERE FIND_IN_SET(id, 'idsToDelete');

, то есть в конкретном показанном случае

DELETE 
FROM myTable
WHERE FIND_IN_SET(id, '113,114');

Если этот список вставлен непосредственно в текст запроса, прежде чем отправить его на MySQL, посмотрите решение, предоставленное хари sh шарма .

1 голос
/ 25 февраля 2020

Вы можете удалить несколько записей, используя предложение IN:

DELETE FROM `myTable` WHERE `ID` IN (YOUR COMMA SEPARATED IDS);

Зачем нужно l oop?

...