sql >> Databasteknik >  >> RDS >> Mysql

Hur avgör man om en MySQL-fråga är giltig?

Till att börja med, kommatecken efter select * hör inte till.

För det andra alias du dina tabeller (table_2 t och table_1 a ), men då använder du inte konsekvent aliasen, så du kan ha problem under körning. Även ur ett underhållsperspektiv tror jag att de flesta föredrar att använda alias när de deklareras, och inga alias annars.

För det tredje gör du en jämförelse mot kolumner från t-tabellen i den yttre markeringen ('smith' in (t.column1, t.column2) ), när det verkar onödigt. Du kan bara göra det i det yttre valet. Med andra ord kan du flytta den terminalen till före AND ('smith'). ...

Om det fungerar -- jag har ingen aning, eftersom jag inte vet vad du försöker åstadkomma.

Tillsammans skulle det lämna 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. Cloud Vendor Deep-Dive:PostgreSQL på Google Cloud Platform (GCP)

  2. Hur man installerar sqlcmd &bcp på SUSE

  3. Mysql-fråga med mysql-variabel fungerar inte i Zend Framework 1

  4. Ta bort en enskild post från Entity Framework?