Mysql
 sql >> Database >  >> RDS >> Mysql

come usare un like con un join in sql?

Utilizzo di INSTR :

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

Usando MI PIACE:

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

Tieni presente che in tutte le opzioni, probabilmente vorrai portare i valori delle colonne in maiuscolo PRIMA del confronto per assicurarti di ottenere corrispondenze senza preoccuparsi della distinzione tra maiuscole e minuscole:

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

Il più efficiente dipenderà in definitiva dal piano EXPLAIN uscita.

JOIN le clausole sono identiche alla scrittura di WHERE clausole. Il JOIN la sintassi viene anche chiamata ANSI JOIN perché standardizzata. Le JOIN non ANSI hanno il seguente aspetto:

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

Non mi preoccuperò di un esempio di LEFT JOIN non ANSI. Il vantaggio della sintassi ANSI JOIN è che separa ciò che unisce le tabelle da ciò che sta effettivamente accadendo in WHERE clausola.