sql >> Base de Datos >  >> RDS >> Mysql

¿Cómo usar un me gusta con una unión en sql?

Usando INSTR :

SELECT *
  FROM TABLE a
  JOIN TABLE b ON INSTR(b.column, a.column) > 0

Usando ME GUSTA:

SELECT *
  FROM TABLE a
  JOIN TABLE b ON b.column LIKE '%'+ a.column +'%'

Usando LIKE, con CONCAT:

SELECT *
  FROM TABLE a
  JOIN TABLE b ON b.column LIKE CONCAT('%', a.column ,'%')

Tenga en cuenta que en todas las opciones, probablemente querrá poner los valores de columna en mayúsculas ANTES de comparar para asegurarse de obtener coincidencias sin preocuparse por la distinción entre mayúsculas y minúsculas:

SELECT *
  FROM (SELECT UPPER(a.column) 'ua'
         TABLE a) a
  JOIN (SELECT UPPER(b.column) 'ub'
         TABLE b) b ON INSTR(b.ub, a.ua) > 0

Lo más eficiente dependerá en última instancia del plan EXPLAIN salida.

JOIN las cláusulas son idénticas a escribir WHERE cláusulas. El JOIN La sintaxis también se conoce como ANSI JOIN porque se estandarizaron. Los JOIN que no son ANSI tienen el siguiente aspecto:

SELECT *
  FROM TABLE a,
       TABLE b
 WHERE INSTR(b.column, a.column) > 0

No me voy a molestar con un ejemplo de UNIÓN IZQUIERDA no ANSI. El beneficio de la sintaxis ANSI JOIN es que separa lo que une las tablas de lo que realmente sucede en WHERE cláusula.