Para começar, a vírgula após
select *
não pertence. Segundo, você alia suas tabelas (
table_2 t
e table_1 a
), mas você não usa consistentemente os aliases, então você pode ter problemas em tempo de execução. Também do ponto de vista da manutenção, acho que a maioria das pessoas prefere usar aliases quando declarado e nenhum aliase de outra forma. Terceiro, você faz uma comparação com cols da tabela t na seleção externa (
'smith' in (t.column1, t.column2)
), quando isso parece desnecessário. Você pode simplesmente fazer isso na seleção externa. Em outras palavras, você pode mover esse parêntese de terminal para antes do AND ('smith'
... Quanto a funcionar - não tenho ideia, pois não sei o que você está tentando realizar.
Combinado, isso deixaria você com:
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)