首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >MySQL WHERE IN通配符

MySQL WHERE IN通配符
EN

Stack Overflow用户
提问于 2013-04-22 23:53:27
回答 2查看 334关注 0票数 0

首先,我知道downloads表没有规范化。

我有这两张表:

代码语言:javascript
复制
downloads

map | author
1 | Nikola
2 | Nikola George

代码语言:javascript
复制
mappers

mapper_id | mapper_name
1 | Nikola
2 | George

我想要找到所有可能的下载行,一个给定的用户是通过他的ID找到的。

我所做的是:

代码语言:javascript
复制
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

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-04-23 00:02:47

进一步补充我的意见,如果你不能规范化你的数据,可以使用类似这样的东西

代码语言:javascript
复制
SELECT * 
FROM downloads 
INNER JOIN mappers
ON FIND_IN_SET(mappers.mapper_name, REPLACE(downloads.author, " ", ",")) > 0
票数 1
EN

Stack Overflow用户

发布于 2013-04-22 23:59:29

您可以尝试这样做:

代码语言:javascript
复制
select 
from downloads d join
     mappers m
     on concat(' ', d.author, ' ') like concat('% ', m.mapper_name, ' %')
where m.id = 1

这不是很有效,但它确实满足了您的需求。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/16151336

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档