Beginnen Sie mit dem Komma nach select *
gehört nicht.
Zweitens aliasieren Sie Ihre Tabellen (table_2 t
und table_1 a
), aber dann verwenden Sie die Aliase nicht konsequent, sodass möglicherweise Probleme zur Laufzeit auftreten. Auch aus Wartungsperspektive denke ich, dass die meisten Leute es vorziehen, Aliase zu verwenden, wenn sie deklariert sind, und sonst keine Aliase.
Drittens führen Sie einen Vergleich mit Spalten aus der t-Tabelle in der äußeren Auswahl durch ('smith' in (t.column1, t.column2)
). ), wenn dies unnötig erscheint. Sie können es einfach in der äußeren Auswahl tun. Mit anderen Worten, Sie können diesen terminalen Elternteil vor das AND ('smith'
...
Ob es funktioniert - ich habe keine Ahnung, da ich nicht weiß, was Sie erreichen wollen.
Kombiniert würde das Sie mit :
verlassenSELECT 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)