Utilizzando INSTR:
SELECT *
FROM TABLE a
JOIN TABLE b ON INSTR(b.column, a.column) > 0
Utilizzando LIKE:
SELECT *
FROM TABLE a
JOIN TABLE b ON b.column LIKE '%'+ a.column +'%'
Utilizzando LIKE, con CONCAT:
SELECT *
FROM TABLE a
JOIN TABLE b ON b.column LIKE CONCAT('%', a.column ,'%')
presente che in tutte le opzioni, probabilmente si vorrà guidare i valori della colonna in maiuscolo prima di confrontare per garantire che si stanno ottenendo partite senza preoccupazioni per la sensibilità caso:
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ù efficace dipenderà in ultima analisi dalla Uscita EXPLAIN plan.
JOIN
clausole sono identiche a scrivere clausole WHERE
. La sintassi JOIN
viene anche denominata ANSI JOIN perché erano standardizzati. Non-ANSI JOIN assomigliare:
SELECT *
FROM TABLE a,
TABLE b
WHERE INSTR(b.column, a.column) > 0
io non ho intenzione di perdere tempo con un esempio non ANSI LEFT JOIN. Il vantaggio della sintassi ANSI JOIN è che separa ciò che unisce le tabelle da ciò che sta effettivamente accadendo nella clausola WHERE
.
fonte
2009-09-06 17:36:13
Grazie .. come potrei ottenere la stessa funzionalità ma renderla più efficiente? –
Ecco come lo faresti. Se è necessario che sia più efficiente, è possibile indicizzare il campo MYCOL nella tabella B. –
Se si utilizza il tipo di tabella MyISAM, è possibile provare un indice di testo completo e vedere se questo aiuta. Generalmente però, la ricerca a testo integrale non è un punto di forza di MySQL. Se la ricerca full text è una parte fondamentale della tua applicazione, considera qualcosa come Apache Lucene - http://lucene.apache.org/java/docs/ – Asaph