MySQL WHERE IN 通配符

标签 mysql where-clause

首先,我知道downloads表没有标准化。

我有这两个表:

downloads

map | author
1 | Nikola
2 | Nikola George

mappers

mapper_id | mapper_name
1 | Nikola
2 | George

我想找到给定用户通过其 ID 找到的所有可能的下载行。

我所做的是:

SELECT * FROM downloads WHERE author IN (SELECT mapper_name FROM mappers WHERE mapper_id = '1')

但这只会返回仅由 userid: 1(在这种情况下 Nikola)完成的 map ,并且联合 map 不会显示。

我的目标是:搜索 ID: 1 map #1 和 map #2 均返回,搜索映射器 id #2 - 返回 map #2

最佳答案

根据我的评论,如果您无法标准化数据,可以使用类似的东西

SELECT * 
FROM downloads 
INNER JOIN mappers
ON FIND_IN_SET(mappers.mapper_name, REPLACE(downloads.author, " ", ",")) > 0

关于MySQL WHERE IN 通配符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16151336/

相关文章:

c# - 比较两个 LINQ 查询,其中语句 Hasvalue 与 !=null

mysql - 我们可以在 CI 中使用单个 where 子句执行多个查询吗

laravel 5,具有多个值的 where 子句

php - 使用 PHP 和 MySQL 作为桌面应用程序

php - 获取两个mysql选择之间的值差异

php - 当用户选择大于 2 mb 的图像时,php 的大小为零

php - 检查前一个 MySQL 查询的状态并执行下一个查询

php - 如何通过一个查询检查多个表中是否存在行?

sql-server-2005 - 试图理解 SQL where 子句

mysql - FireDac MySql Connector.ExecSql 无法工作