sql >> Database teknologi >  >> RDS >> Mysql

Hvordan afgør man, om en MySQL-forespørgsel er gyldig?

Til at starte med, kommaet efter select * hører ikke til.

For det andet kalder du dine tabeller (table_2 t og table_1 a ), men så bruger du ikke konsekvent aliasserne, så du kan have problemer under kørslen. Også fra et vedligeholdelsesperspektiv tror jeg, at de fleste foretrækker at bruge aliaser, når de erklæres, og ingen aliaser ellers.

For det tredje laver du en sammenligning med kolonner fra t-tabellen i det ydre udvalg ('smith' in (t.column1, t.column2) ), når det forekommer unødvendigt. Du kan bare gøre det i den ydre markering. Med andre ord, du kan flytte den terminale paren til før AND ('smith'). ...

Med hensyn til om det virker -- jeg aner ikke, da jeg ikke ved, hvad du forsøger at opnå.

Kombineret ville det efterlade dig med :

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)



  1. Tuples er ikke indsat sekventielt i databasetabellen?

  2. Hvordan kan jeg se, om mit Oracle-system er indstillet til at understøtte Unicode eller multibyte-tegn?

  3. Pivotering af data ved hjælp af to kolonner

  4. Hent den seneste tidsstempelrække fra tabellen ved hjælp af INNER JOIN