sql >> Base de Datos >  >> RDS >> Mysql

¿Cómo determinar si una consulta MySQL es válida?

Para empezar, la coma después de select * no pertenece.

En segundo lugar, crea un alias para sus tablas (table_2 t y table_1 a ), pero no usa los alias de manera constante, por lo que es posible que tenga problemas en el tiempo de ejecución. También desde una perspectiva de mantenimiento, creo que la mayoría de la gente prefiere usar alias cuando se declaran, y ningún alias en caso contrario.

En tercer lugar, realiza una comparación con cols de la tabla t en la selección externa ('smith' in (t.column1, t.column2) ), cuando eso parece innecesario. Puedes hacerlo en la selección exterior. En otras palabras, puede mover ese terminal paren antes del AND ('smith' ...

En cuanto a si funciona, no tengo idea, ya que no sé lo que estás tratando de lograr.

Combinado, eso te dejaría 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)