Per cominciare, la virgola dopo select *
non appartiene.
In secondo luogo, alias le tue tabelle (table_2 t
e table_1 a
), ma non usi costantemente gli alias, quindi potresti avere problemi in fase di esecuzione. Anche dal punto di vista della manutenzione, penso che la maggior parte delle persone preferisca utilizzare gli alias quando vengono dichiarati e nessun alias in caso contrario.
Terzo, esegui un confronto con cols dalla tabella t nella selezione esterna ('smith' in (t.column1, t.column2)
), quando ciò sembra superfluo. Puoi semplicemente farlo nella selezione esterna. In altre parole, puoi spostare la parentesi del terminale prima di AND ('smith'
...
Per quanto riguarda se funziona, non ne ho idea, dal momento che non so cosa stai cercando di ottenere.
Combinato, questo ti lascerebbe con :
SELECT t.*
FROM TABLE_2 t
WHERE EXISTS (SELECT IF(a.column1 = 'smith', a.column2, a.column1)
FROM TABLE_1 a
WHERE 'smith' IN (a.column1, a.column2)
AND a.status = 1)
AND ( 'smith' IN (t.column1, t.column2)