序文: 多くのビジネス テーブルでは、歴史的またはパフォーマンス上の理由により、最初のパラダイムに違反する設計パターンが使用されているためです。つまり、複数の属性値が同じ列に格納されます (具体的な構造については下の表を参照)。 このモードでは、多くの場合、アプリケーションは区切り文字に基づいて列を分割し、列から行への変換の結果を取得する必要があります。 表データ:
期待される結果:
文章: #処理するテーブル create table tbl_name (ID int, mSize varchar(100)); tbl_name に値 (1,'tiny,small,big') を挿入します。 tbl_name値に挿入します(2、'small、medium'); tbl_name値に挿入します(3、 'tiny、big'); #AutoIncrement テーブル for loop create table incre_table (AutoIncreID int); incre_tableの値に挿入する(1) incre_tableの値に挿入する(2) incre_tableの値に挿入する(3) a.ID、substring_index(substring_index(a.mSize、'、'、b.AutoIncreID)、'、'、-1) を選択します。 から テーブル名 参加する 増分テーブル b b.AutoIncreID <= (length(a.mSize) - length(replace(a.mSize,',',''))+1) の場合 a.ID で並べ替えます。 原則分析: この結合の最も基本的な原理は、デカルト積です。このようにしてサイクルが達成されます。 具体的な問題の分析は次のとおりです。 length(a.Size) - length(replace(a.mSize,',',''))+1 は、カンマ区切り後の列内の値の数を示し、以下では n と表記します。 参加プロセスの疑似コード: IDによるループ { 判定: i <= n かどうか { i番目のコンマに最も近いデータを取得します。つまり、substring_index(substring_index(a.mSize,',',b.ID),',',-1) 私 = 私 +1 } ID = ID +1 } 要約: このアプローチの欠点は、連続した列を持つ別のテーブル (ここでは increase_table) が必要になることです。また、連続シーケンスの最大値は、セグメンテーション要件を満たす値の数よりも大きくなければなりません。 たとえば、mSize に 100 個のカンマ区切り値が含まれる行がある場合、increase_table には少なくとも 100 個の連続した行が必要です。 もちろん、MySQL には連続した番号の既成リストも用意されています。たとえば、mysql.help_topic: help_topic_id には合計 504 個の値があり、通常はほとんどのニーズを満たすことができます。 書き直すと次のようになります。 a.ID、substring_index(substring_index(a.mSize、'、'、b.help_topic_id+1)、'、'、-1) を選択 から テーブル名 参加する mysql.help_topic b b.help_topic_id について < (length(a.mSize) - length(replace(a.mSize,',',''))+1) a.ID で並べ替えます。 上記のMySQLの列から行への変換のヒント(共有)は、編集者があなたと共有するすべてのコンテンツです。参考になれば幸いです。また、123WORDPRESS.COMを応援していただければ幸いです。 以下もご興味があるかもしれません:
|
<<: Selenium+testng を使用して Docker で Web 自動化を実現する方法
Vue を学習する際に、vscode ターミナルで常に webpack 命令を使用すると、次のよう...
序文最近、偶然 MySQL の coalesce を発見しました。ちょうど時間があったので、MySQ...
時には、Web ページに掲載されているコンテンツが悪意のある人物に盗用されるのを望まないため、Web...
最近 CSS を勉強していたとき、 2 つの CSS プロパティだけを使用して全画面スクロール効果を...
コンセプトインデックスにクエリ要件を満たすすべてのデータが含まれている場合、それはカバーリング イン...
目次Vue ミックスインの使用ミックスインでのデータアクセスミックスイン/index.jsホーム.v...
ページをナビゲートする2つの方法宣言型ナビゲーション: リンクをクリックしてナビゲーションを実現する...
目次これを Vue.$store.state.xx.xxストアからデータを取得する私のプロジェクトフ...
1. ディスクパーティション: 2. fdiskパーティションディスクが2 TB未満の場合はfdis...
偶然、プロジェクト内でVue.$setが無効であることがわかりましたデータ フィルタリングを追加する...
以前の就職面接で面接官が尋ねた質問を覚えています。「インライン要素とは何ですか。ブロックレベル要素と...
この記事の例では、検証コードの動的干渉を実装するためのjsの具体的なコードを共有しています。具体的な...
目次PXEはサーバーの無人バッチ展開を実装します1. PXEの概要1.1 PXEとは何か1.2 キッ...
導入Ubuntu のデフォルトのソースは国内サーバーではないため、更新されたソフトウェアのダウンロー...
目次1. 環境設備2. ToastコンポーネントとToastServiceを作成する2.1 Toas...