首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >多个表之间的MySQL多个LIKE

多个表之间的MySQL多个LIKE
EN

Stack Overflow用户
提问于 2013-01-17 11:37:34
回答 3查看 5.1K关注 0票数 3

我一直在寻找解决方案,但到目前为止我还没有找到。

所以这里的问题是,假设我有两个表:

Table1

代码语言:javascript
运行
复制
name | code
-------------------
a    | [a][b][c]
b    | [a][c][d]
c    | [a][e]

Table2

代码语言:javascript
运行
复制
code | name
-------------------
a    | aaaa
b    | bbbb
c    | cccc
d    | dddd
e    | eeee

我想做多个select Table1.nameTable2.name where Table1.code LIKE '%b%'Table1.code LIKE '%e%'

所以结果应该是这样:

代码语言:javascript
运行
复制
name | name
------------------
a    | aaaa
c    | cccc

我确实试过了:

代码语言:javascript
运行
复制
SELECT Table1.name, Table2.name 
FROM Table1, Table2 
WHERE Table1.code LIKE '%b%' OR Table1.code LIKE '%e%'

但它并没有起作用。我是新手,非常感谢您的帮助:)

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2013-01-17 13:13:53

为了使用连接2个表,如函数或实例,函数将

使用"like"

代码语言:javascript
运行
复制
 **column_name1 like '%'column_name2'%'**

使用"instr"

代码语言:javascript
运行
复制
 **instr(column_name1,column_name2)>0**

其中,column_name1引用列column_name2引用您正在搜索的模式

在您的示例中,尝试如下所示

使用like的

代码语言:javascript
运行
复制
SELECT Table1_name, Table2_name FROM 
( SELECT Table1.name table1_name
        ,Table1.code table1_code
        ,Table2.name table2_name
        ,Table2.code table2_code
FROM Table1 JOIN Table2 ON  
(Table2.name LIKE '%'||Table1.name||'%') OR (Table1.code LIKE '%'||Table2.code||'%')
WHERE Table1.name=Table2.code
)  new1
 WHERE Table1_code LIKE '%b%' OR Table1_code LIKE '%e%'

使用INSTR

代码语言:javascript
运行
复制
 SELECT Table1_name, Table2_name FROM 
( SELECT Table1.name table1_name
        ,Table1.code table1_code
        ,Table2.name table2_name
        ,Table2.code table2_code
FROM Table1 JOIN Table2 ON
INSTR(Table2.name,Table1.name)>0   OR INSTR(Table1.code,Table2.code)>0 
WHERE Table1.name=Table2.code
)  new1
 WHERE Table1_code LIKE '%b%' OR Table1_code LIKE '%e%'
票数 2
EN

Stack Overflow用户

发布于 2013-01-17 11:59:27

代码语言:javascript
运行
复制
SELECT t1.name, t2.name FROM 
Table1 t1 INNER JOIN Table2 t2 ON (t1.name = t2.code)
WHERE t1.code LIKE '%b%' OR t1.code LIKE '%e%'

由于这是一个内连接,因此如果第二个表中有匹配的代码,则只会返回第一个表中的行。如果希望显示Table1中任何匹配的行,请使用LEFT JOIN

票数 2
EN

Stack Overflow用户

发布于 2013-01-17 11:40:13

如果我是对的,这样的东西对你来说应该是有效的:

代码语言:javascript
运行
复制
SELECT * FROM table1 AND table2 WHERE table1code LIKE '%e%'
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/14371857

复制
相关文章

相似问题

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