15

次の方法で選択クエリを実行する必要があります。

select * from my_table where id NOT IN (comma_delimited_string);

それを達成する正しい方法は何ですか?

文字列を送信するクライアント コードを制御しているという事実を考慮すると、より良いアプローチはありますか? (文字列には約 30 個の ID が保持されるため、ID ごとに 1 つずつ、30 個のパラメーターを送信しないようにしています)。

皆さん、ありがとうございました

4

1 に答える 1

35

MySQLFIND_IN_SET関数を使用できます。

SELECT *
FROM my_table
WHERE FIND_IN_SET(id, comma_delimited_string) = 0

補遺: 上記のクエリは最適化できないidため、 MySQL にインデックスがある場合は使用しないことに注意してください。使用の相対的な単純さが、パフォーマンスの潜在的な影響を受ける価値があるかどうかを判断する必要があります(潜在的なというのは、インデックスが作成されているかどうか、またはテーブルがこれを懸念するのに十分な大きさであるかどうFIND_IN_SETかがわからないためです)。id

于 2013-06-07T18:12:17.930 に答える