首先,我知道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)和共同地图不会显示。
我的目标是:搜索ID:1返回地图#1和地图#2,搜索地图ID#2 - 返回地图#2
答案 0 :(得分:1)
你可以试试这个:
select
from downloads d join
mappers m
on concat(' ', d.author, ' ') like concat('% ', m.mapper_name, ' %')
where m.id = 1
效率不高,但确实符合您的需求。
答案 1 :(得分:1)
根据我的评论,如果您无法规范化数据,可以使用此类内容
SELECT *
FROM downloads
INNER JOIN mappers
ON FIND_IN_SET(mappers.mapper_name, REPLACE(downloads.author, " ", ",")) > 0