Mysql
 sql >> Base de données >  >> RDS >> Mysql

Comment déterminer si une requête MySQL est valide ?

Pour commencer, la virgule après select * n'appartient pas.

Deuxièmement, vous aliasez vos tables (table_2 t et table_1 a ), mais vous n'utilisez pas systématiquement les alias, vous pouvez donc rencontrer des problèmes lors de l'exécution. Également du point de vue de la maintenance, je pense que la plupart des gens préfèrent utiliser des alias lorsqu'ils sont déclarés, et aucun alias autrement.

Troisièmement, vous effectuez une comparaison avec les colonnes de la table t dans la sélection externe ('smith' in (t.column1, t.column2) ), lorsque cela semble inutile. Vous pouvez simplement le faire dans la sélection externe. En d'autres termes, vous pouvez déplacer ce parent terminal avant le AND ('smith' ...

Quant à savoir si cela fonctionne -- je n'en ai aucune idée, car je ne sais pas ce que vous essayez d'accomplir.

Combiné, cela vous laisserait avec :

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)