まず、select *
の後のコンマ 所属していません。
次に、テーブルのエイリアスを作成します(table_2 t
およびtable_1 a
)、ただし、エイリアスを一貫して使用しないため、実行時に問題が発生する可能性があります。また、メンテナンスの観点から、ほとんどの人は宣言時にエイリアスを使用し、それ以外の場合はエイリアスを使用しないことを好むと思います。
3番目に、外側のselect('smith' in (t.column1, t.column2)
のtテーブルの列と比較します。 )、それが不要と思われる場合。あなたは外側の選択でそれをすることができます。つまり、そのターミナルパレンをAND ('smith'
)の前に移動できます。 ...
それが機能するかどうかについては、あなたが何を達成しようとしているのかわからないので、私にはわかりません。
組み合わせると、次のようになります:
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)