首先,我知道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/