Как проверить, является ли строка подстрокой другой, не используя большие ResultSets? - PullRequest
1 голос
/ 20 августа 2011

Я пытаюсь написать программу сравнения веб-цен на Java.У меня есть база данных, в которой уже есть номер типа продуктов (например, «ASD01»).И у меня есть другая база данных, которая имеет номер типа продукта, например: 'somethingASD01something'.

Я хочу проверить, содержит ли база данных № 2 строку в базе данных № 1.И удалить строки, где он не содержится.Я попытался решить эту проблему, выбрав обе базы данных в наборе результатов и сравнив их в коде Java, но они слишком велики и используют слишком много памяти.

Я нашел метод LOCATE () в mysql,что говорит мне, что я хочу, но мне все еще нужно использовать базу данных № 1 в качестве ReultSet, или есть какие-то другие способы перебора строк?

1 Ответ

2 голосов
/ 20 августа 2011

Если я правильно понял вопрос, вы сможете удалить ненужные записи с помощью простого SQL ...

Если вы хотите удалить из DB2 записи, которые НЕ соответствуют к таблице в DB1, тогда подход LEFT JOIN был бы подходом ... DB2 LEFT JOIN DB1 при сравнении строк, затем удалите любую запись DB2, в которой нет совпадения DB1:

DELETE `DB2`.`TableTwo`.*

FROM `DB2`.`TableTwo` a
LEFT JOIN `DB1`.`TableOne` t

on a.FieldFromTableTwo LIKE CONCAT('%', t.FieldFromTableOne, '%')

WHERE t.FieldFromTableOne IS NULL
...