1

以下代码工作正常。

SELECT Message
FROM SystemEventsR
WHERE Message
LIKE CONCAT('%',(SELECT username FROM users LIMIT 1),'%')

不过,我的问题是,大多数时候我需要返回不止一行。

我省略了导致“错误代码 1242”的 LIMIT

为什么是这样?

我需要包含至少一个用户名的所有消息

我也使用了 JOIN 但无济于事

SELECT Message
FROM SystemEventsR
JOIN users ON Message LIKE CONCAT('%',(SELECT username FROM users),'%')

我想要以下内容,但用户表中的行数不是恒定的

SELECT Message
FROM SystemEventsR
WHERE 
Message LIKE CONCAT('%',(SELECT username FROM users LIMIT 1,1),'%') OR
Message LIKE CONCAT('%',(SELECT username FROM users LIMIT 2,1),'%') OR
Message LIKE CONCAT('%',(SELECT username FROM users LIMIT 3,1),'%')
4

2 回答 2

5

为什么不简单;

SELECT Message 
FROM SystemEventsR s
JOIN users u
  ON s.Message LIKE CONCAT('%',u.username,'%')

一个用于测试的 SQLfiddle

于 2013-06-04T14:19:44.820 回答
1

你可以试试这个:

SELECT Message
FROM SystemEventsR
WHERE Message
RLIKE (SELECT GROUP_CONCAT(username SEPARATOR '|') FROM users)

查看有关RLIKE的手册。

于 2013-06-02T15:01:54.267 回答