在LIKE中使用的MySQL查询结果

时间:2010-08-26 15:29:55

标签: mysql

我正在尝试编写一个查询,以从字段中的大型用户名列表中提取包含用户名的所有行。

例如,该表包含一个名为“Worklog”的列,其中包含用户及其用户名所做的注释。我需要在该字段中搜索我所拥有的列表中包含的所有用户名。

我尝试了一些不同的东西,却无法发挥作用。到目前为止,这是我尝试过的一种方式:

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

问题是我需要使用LIKE,因为它正在搜索大量的文本,但我也有一个很大的列表,而且该列表需要是动态的,因为在这里工作的人经常变化。有什么想法吗?

2 个答案:

答案 0 :(得分:0)

 SELECT * 
 FROM `JULY2010` 
 WHERE `WorkLog`  REGEXP
  (SELECT CONCAT( `UserName`, '|') 
   FROM `OpsAnalyst`)

答案 1 :(得分:0)

我略微修改了它并使用了GROUP_CONCAT(),现在我的查询如下所示:

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

我现在得到一个结果集,但似乎没有我应该得到的那么多结果。我将不得不再仔细研究一下,找出问题所在