MySQL在多个表之间多个LIKE

时间:2013-01-17 03:37:34

标签: mysql sql-like

我已经找到了解决方案,但到目前为止我还没有找到它。

所以这里的问题,就是说我有2个表:

表1

name | code
-------------------
a    | [a][b][c]
b    | [a][c][d]
c    | [a][e]

表2

code | name
-------------------
a    | aaaa
b    | bbbb
c    | cccc
d    | dddd
e    | eeee

我想做多个选择Table1.nameTable2.name Table1.code LIKE '%b%'Table1.code LIKE '%e%'

所以它应该是这样的结果:

name | name
------------------
a    | aaaa
c    | cccc

我确实尝试过:

SELECT Table1.name, Table2.name 
FROM Table1, Table2 
WHERE Table1.code LIKE '%b%' OR Table1.code LIKE '%e%'

但它没有用。我是新手,非常感谢任何帮助:)

3 个答案:

答案 0 :(得分:2)

为了使用喜欢功能加入2表,或者 instr 功能

使用“喜欢”

 **column_name1 like '%'column_name2'%'**

使用“instr”

 **instr(column_name1,column_name2)>0**

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

在您的示例中

尝试此

使用

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

 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%'

答案 1 :(得分:1)

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 :(得分:0)

如果我是对的,这样的事情对你有用:

SELECT * FROM table1 AND table2 WHERE table1code LIKE '%e%'