Результаты запроса MySQL, используемые в LIKE

0

Я пытаюсь написать запрос, чтобы вытащить все строки, содержащие имя пользователя из большого списка имен пользователей в поле.

Например, таблица содержит столбец "Worklog", который содержит комментарии пользователей и их имя пользователя. Мне нужно найти это поле для всех имен пользователей, которые содержатся в списке, который у меня есть.

Я пробовал несколько разных вещей, но не могу заставить ничего работать. Пока что это то, что я пробовал:

SELECT * 
FROM `JULY2010` 
WHERE `WorkLog` 
IN (
     SELECT CONCAT( '%', `UserName` , '%' ) 
     FROM `OpsAnalyst`
)

Проблема заключается в том, что мне нужно использовать LIKE, потому что он ищет большой объем текста, но у меня также есть большой список, из которого он извлекается, и этот список должен быть динамическим, потому что люди, которые здесь работают, часто меняются, Любые идеи?

  • 0
    Почему вам нужно использовать как? ты не можешь просто присоединиться к двум столам?
  • 0
    посмотрите на этот ответ. meybe regexp поможет вам stackoverflow.com/questions/1127088/mysql-like-in
Показать ещё 1 комментарий
Теги:

2 ответа

0
Лучший ответ
 SELECT * 
 FROM `JULY2010` 
 WHERE `WorkLog`  REGEXP
  (SELECT CONCAT( `UserName`, '|') 
   FROM `OpsAnalyst`)
  • 0
    Я получаю эту ошибку при выполнении этого запроса: # 1242 - Подзапрос возвращает более 1 строки
0

Я немного изменил это и использовал GROUP_CONCAT(), и теперь мой запрос выглядит так:

SELECT * 
FROM JULY2010 
WHERE `WorkLog` 
REGEXP (
    SELECT GROUP_CONCAT(`UserName` SEPARATOR '|') FROM `OpsAnalyst`
)

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

Ещё вопросы

Сообщество Overcoder
Наверх
Меню