以下代码正常工作。
SELECT Message
FROM SystemEventsR
WHERE Message
LIKE CONCAT('%',(SELECT username FROM users LIMIT 1),'%')
我的问题是,大部分时间我需要返回多行。
我省略了LIMIT,导致'错误代码1242'
为什么会这样?
我需要包含至少一个用户名的所有邮件
我也使用了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),'%')
答案 0 :(得分:5)
为什么不简单;
SELECT Message
FROM SystemEventsR s
JOIN users u
ON s.Message LIKE CONCAT('%',u.username,'%')
答案 1 :(得分:1)
你可以试试这个:
SELECT Message
FROM SystemEventsR
WHERE Message
RLIKE (SELECT GROUP_CONCAT(username SEPARATOR '|') FROM users)
查看有关RLIKE。
的手册