FIND_IN_SET() と IN(): MySQL の違いを理解する
質問:
MySQL には、「orders」と「company」という 2 つのテーブルがあります。 「orders」の「attachedCompanyIDs」列には、「company」の行を参照する ID のカンマ区切りのリストが格納されます。 FIND_IN_SET() を使用して注文に関連付けられた会社名をクエリすると、期待どおりの結果が得られます。ただし、代わりに IN() を使用すると、最初に一致した会社のみが返されます。なぜこのようなことが起こるのでしょうか?
答え:
attachedCompanyIDs 列は、VARCHAR 型のスカラー値です。 IN() を使用する場合、MySQL は文字列を整数にキャストし、最初の数値以外の文字 (つまり、カンマ) で切り捨てます。これは、attachedCompanyIDs に複数の値が含まれている場合、IN 比較では最初の値のみが考慮されることを意味します。
解決方法:
特定のシナリオに応じて、次のものが考えられます。この問題に対するいくつかの回避策:
追加の考慮事項:
以上がMySQL FIND_IN_SET() と IN(): IN() がカンマ区切りの ID で最初に一致したものだけを返すのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。