首先,我知道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同时返回map #1和map #2,搜索mapper id #2 -返回map #2
发布于 2013-04-23 00:02:47
进一步补充我的意见,如果你不能规范化你的数据,可以使用类似这样的东西
SELECT *
FROM downloads
INNER JOIN mappers
ON FIND_IN_SET(mappers.mapper_name, REPLACE(downloads.author, " ", ",")) > 0发布于 2013-04-22 23:59:29
您可以尝试这样做:
select
from downloads d join
mappers m
on concat(' ', d.author, ' ') like concat('% ', m.mapper_name, ' %')
where m.id = 1这不是很有效,但它确实满足了您的需求。
https://stackoverflow.com/questions/16151336
复制相似问题