MYSQL:LIKE(子查询)返回多行

标签 mysql subquery rows sql-like

以下代码可以正常工作。

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),'%')

最佳答案

为什么不简单;

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

An SQLfiddle to test with .

关于MYSQL:LIKE(子查询)返回多行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16882294/

相关文章:

mysql - 获取每组金额 >= 90% 的前 n 条记录

sql - 在 SQL 中执行数据透视表的 JOIN

mysql - SQL 选择并连接所有行的值

mysql - 在不同的列中显示一列的mysql结果

mysql - 未找到 Jdbc 驱动程序

Python MySQL 字典准备语句抛出错误

mysql - 该子查询如何复制结果?它是否为结果中的每一行发送相同的请求?

php - 将mysql中的行数显示到android中的textview中

mysql - 我需要从 mysql 表中获取所有唯一数据并将其放入新表中

sql - 如何在 SQL 中仅选择当月数据?