Mysql
 sql >> Base de Dados >  >> RDS >> Mysql

Como determinar se uma consulta MySQL é válida?


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)