2010-08-26 158 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` 
) 

我現在得到一個結果集,但現在看來似乎並不像許多成果因爲我應該得到。我將不得不考慮一點,以找出問題所在