我正在尝试编写一个查询,以从字段中的大型用户名列表中提取包含用户名的所有行。
例如,该表包含一个名为“Worklog”的列,其中包含用户及其用户名所做的注释。我需要在该字段中搜索我所拥有的列表中包含的所有用户名。
我尝试了一些不同的东西,却无法发挥作用。到目前为止,这是我尝试过的一种方式:
SELECT *
FROM `JULY2010`
WHERE `WorkLog`
IN (
SELECT CONCAT( '%', `UserName` , '%' )
FROM `OpsAnalyst`
)
问题是我需要使用LIKE,因为它正在搜索大量的文本,但我也有一个很大的列表,而且该列表需要是动态的,因为在这里工作的人经常变化。有什么想法吗?
答案 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`
)
我现在得到一个结果集,但似乎没有我应该得到的那么多结果。我将不得不再仔细研究一下,找出问题所在