1

次のようなステートメントがあるとします。

select * from table where column in (select other_column from other_table)

ただし、これは、列「binary」がother_columnと等しい場合にのみ一致させたいと思います。「binarylike」のようなものですが、「in」演算子用です。

質問が明確であることを願っています。ありがとう :)

4

2 に答える 2

1
于 2012-07-07T23:42:00.360 に答える
1

できるよ:

select * from table where BINARY column in (select other_column from other_table)

また

select * from table where column in (select BINARY other_column from other_table)

しかし、比較する前にすべての値に対して型変換を行うように mysql に要求しているため、これらの両方のパフォーマンスはひどいものになります。

別のコメントが示唆しているように、クエリを JOIN として書き直す方が良いですが、それでも型変換を行っている値に結合するという問題があり、インデックスを使用できません。

それよりも、このフィールドで大文字と小文字を区別するか正確な比較が必要な場合は、テーブルの文字セットを列の BINARY に変更するか、_cs で照合を使用します。

いつものように、マニュアルにはこのMySQL 文字セットと照合順序のすべてが記載されています。

于 2012-07-08T00:13:57.407 に答える