Om te beginnen, de komma na select *
hoort niet thuis.
Ten tweede alias je je tabellen (table_2 t
en table_1 a
), maar dan gebruik je de aliassen niet consequent, dus je kunt tijdens runtime problemen ondervinden. Ook vanuit het oogpunt van onderhoud denk ik dat de meeste mensen de voorkeur geven aan het gebruik van aliassen wanneer ze worden aangegeven, en anders geen aliassen.
Ten derde doe je een vergelijking met cols uit de t-tabel in de buitenste select ('smith' in (t.column1, t.column2)
), wanneer dat onnodig lijkt. Je kunt het gewoon in de buitenste selectie doen. Met andere woorden, u kunt dat eindparen verplaatsen naar vóór de AND ('smith'
...
Of het werkt -- ik heb geen idee, aangezien ik niet weet wat je probeert te bereiken.
Gecombineerd, zou dat je achterlaten met:
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)