MySQL で区切られた値を使用して複数のテーブルからデータを結合する
質問:
どのようにすればよいですかを使用せずに、列の 1 つにセミコロンで区切られた値を持つ複数のテーブルからデータを効率的に取得します。外部言語を使用するのか、リンク テーブルを導入するのか?
回答:
この問題に対処するには、セミコロンで区切られた値を個々の行に変換する手法を利用できます。これにより、テーブルを結合して目的の結果を得ることができます。
ソリューション:
提供されたソリューションは 2 つのカスタム MySQL 関数を使用します:
これらの関数は、integerseries テーブルを使用して反復的にユーザー テーブルとリソース テーブル間の結合と結合されます。セミコロンで区切られた値:
<code class="sql">SELECT user_resource.user, resource.data FROM user_resource JOIN integerseries AS isequence ON isequence.id <= COUNT_IN_SET(user_resource.resources, ';') /* normalize */ JOIN resource ON resource.id = VALUE_IN_SET(user_resource.resources, ';', isequence.id) ORDER BY user_resource.user, resource.data</code>
このクエリの結果、各ユーザーのリソースが個別の行として表されるテーブルが作成され、リソース テーブルと簡単に結合して対応するデータを取得できます。
追加情報:
以上がテーブルをリンクせずに、MySQL で区切り値で区切られた複数のテーブルのデータを結合する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。