Я пытаюсь написать запрос, чтобы вытащить все строки, содержащие имя пользователя из большого списка имен пользователей в поле.
Например, таблица содержит столбец "Worklog", который содержит комментарии пользователей и их имя пользователя. Мне нужно найти это поле для всех имен пользователей, которые содержатся в списке, который у меня есть.
Я пробовал несколько разных вещей, но не могу заставить ничего работать. Пока что это то, что я пробовал:
SELECT *
FROM `JULY2010`
WHERE `WorkLog`
IN (
SELECT CONCAT( '%', `UserName` , '%' )
FROM `OpsAnalyst`
)
Проблема заключается в том, что мне нужно использовать LIKE, потому что он ищет большой объем текста, но у меня также есть большой список, из которого он извлекается, и этот список должен быть динамическим, потому что люди, которые здесь работают, часто меняются, Любые идеи?
SELECT *
FROM `JULY2010`
WHERE `WorkLog` REGEXP
(SELECT CONCAT( `UserName`, '|')
FROM `OpsAnalyst`)
Я немного изменил это и использовал GROUP_CONCAT(), и теперь мой запрос выглядит так:
SELECT *
FROM JULY2010
WHERE `WorkLog`
REGEXP (
SELECT GROUP_CONCAT(`UserName` SEPARATOR '|') FROM `OpsAnalyst`
)
Теперь я получаю набор результатов, но похоже, что не так много результатов, как я должен получать. Я собираюсь изучить его немного больше, чтобы выяснить, что проблема