sql >> Databáze >  >> RDS >> Mysql

Jak zjistit, zda je dotaz MySQL platný?

Chcete-li začít, čárka za select * nepatří.

Za druhé, vytvoříte alias vašich tabulek (table_2 t a table_1 a ), ale pak aliasy nepoužíváte konzistentně, takže můžete mít problémy za běhu. Také z hlediska údržby si myslím, že většina lidí raději používá aliasy, když jsou deklarovány, a jinak žádné aliasy.

Za třetí, provedete porovnání s cols z tabulky t ve vnějším výběru ('smith' in (t.column1, t.column2) ), když se to zdá zbytečné. Můžete to udělat jen ve vnějším výběru. Jinými slovy, můžete přesunout tuto koncovou závorku před AND ('smith' ...

Pokud jde o to, zda to funguje - nemám ponětí, protože nevím, čeho se snažíte dosáhnout.

V kombinaci by vám zbylo:

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. Jak používat role, které se změnily v MySQL 8.0

  2. PHP MySql (1045) Přístup odepřen pro uživatele

  3. Chyba syntaxe PDO Mysql 1064

  4. Oracle Database Developer Choice Awards