2009-12-18 20 views
32

He estado tratando de hacer funcionar esto desde hace bastante tiempo, pero parece que no funciona, tal vez ni siquiera es posible, lo que quiero hacer es realizar una consulta de combinación de mysql usando como tal como este ejemplo he encontrado ...mysql join query using like?

SELECT * 
FROM Table1 
INNER JOIN Table2 ON Table1.col LIKE '%' + Table2.col + '%' 

pero simplemente no parece funcionar en absoluto, ningún tipo de ayuda que se puede dar sería genial, gracias!

Respuesta

63

Trate

SELECT * 
FROM Table1 
INNER JOIN Table2 ON Table1.col LIKE CONCAT('%', Table2.col, '%') 

MySQL hace concatenación de cadenas diferente a otras bases de datos, por lo que en caso de que desee portar su aplicación, es necesario tener una versión alternativa en la que || se utiliza como operador de concatenación, como se ha mencionado por Michael en otra respuesta. Este operador no funciona en MySQL, ya que significa or.

+2

+1 y suicidio, como resultado de nuestra conversación ;-) –

+0

bien funciona ahora, pero solo devuelve unas cuantas filas cuando debería devolver mucho más, es como si solo estuviera usando la primera fila de la tabla1 ? – David

+0

Tal vez lo que quieres es un cruce? seleccione * de t1, t2 donde t1.col ... –

1

¿Qué hay de esto en su lugar:

SELECT * FROM Table1, Table2 WHERE Table1.col LIKE '%'+Table2.col+'%'; 

Puesto que usted está seleccionando todo, desde las dos mesas de todos modos, esto probablemente llegue allí.