2010-08-26 76 views
0

我正在尝试编写一个查询来从字段中的大量用户名列表中提取包含用户名的所有行。LIKE中使用的MySQL查询结果

例如,该表包含一个名为'Worklog'的列,其中包含用户及其用户名发表的评论。我需要在该字段中搜索列表中包含的所有用户名。

我尝试了几个不同的东西,但不能得到任何工作。到目前为止,这是什么样的我曾尝试:

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

的问题是我需要像,因为它是搜索大量文本的使用,但我也有,这是从拉大名单,而且这份名单必须是动态的,因为在这里工作的人经常变化。有任何想法吗?

+0

为什么你需要使用像?你不能只加入两张桌子吗? – Tim 2010-08-26 15:33:42

+0

寻找这个答案。 meybe regexp帮助你http://stackoverflow.com/questions/1127088/mysql-like-in – 2010-08-26 15:35:53

+0

@Tim我没有什么能够真正加入表格的。没有共同的专栏。也许我误解你的答案?我对SQL很陌生,到目前为止我尝试过的所有东西都来自我发现在Google上搜索类似问题的人。 – mitchellwright 2010-08-26 15:58:18

回答

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

执行此查询时出现此错误: #1242 - 子查询返回多于一行 – mitchellwright 2010-08-26 16:17:02

0

我稍微修改这一点,并使用GROUP_CONCAT(),现在我的查询看起来是这样的:

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

我现在得到一个结果集,但现在看来似乎并不像许多成果因为我应该得到。我将不得不考虑一点,以找出问题所在