Как мне написать al oop in MySQL для каждого значения в строке через запятую? - PullRequest
1 голос
/ 22 февраля 2020

У меня есть значение (IP-адрес) в таблице А. Если это значение не существует в поле значений, разделенных запятыми в TableB, мне нужно удалить строку в TableA. Я могу получить эти IP-адреса с помощью следующего, но я должен повторить для каждой записи в строке CSV. Количество значений в столбце CSV String таблицы B может колебаться. Моя функция Stringsplit представляет собой простой синтаксический анализ (Substr ()) строки, запятая и позиция которой являются параметрами. Последний параметр нужно увеличивать каждый проход до тех пор, пока он не будет выполнен.

*SELECT * FROM TableA AS A
JOIN `TableB` AS B ON B.ID = A.ID
WHERE 
A.`column` <> stringsplit(B.`Column`,',',1) AND
A.`column` <> stringsplit(B.`Column``,',',2) AND
A.`column` <> stringsplit(B.`Column`,',',3) AND
 ETC......

. Я могу получить точное количество этих значений следующим образом: Stringsplit () увеличиваться с каждым проходом?

1 Ответ

0 голосов
/ 22 февраля 2020

У меня есть значение (IP-адрес) в таблице А. Если это значение не существует в поле значений, разделенных запятыми в Таблице B, мне нужно удалить строку в Таблице A

. Вы можете использовать not exists с коррелированным подзапросом, который использует find_in_set() для поиска значения из tablea в списках CSV, хранящихся в tableb:

delete from tablea
where not exists (
    select 1 from tableb where find_in_set(tablea.column, tableb.column)
)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...