MySQL は数値補助テーブルを使用して複雑な列の変更と行を実装します。

黄舟
リリース: 2017-02-17 13:12:54
オリジナル
1436 人が閲覧しました

ある日、QQ のサークルに参加しているネチズンが助けを求めるメッセージを送信しました:

PropID name Amount
3 Yuanbao 2
2 Ledou 3

SQL を使用して出力を書き込むことはできますか、つまり、 Amountに該当するアイテムの数:

PropID名
3 元宝
3 元宝
2 Ledou
2 Ledou
2 Ledou

[Note]:

3 Yuanbao 2
Note 、最後の列は 2 で、そのようなレコードが 2 つあることを意味し、
3 Yuanbao
3 Yuanbao
になります。レコードの最後の数の列を削除し、繰り返し行を直接使用してそれを表します。したがって、この例によれば、2 3 となります。記録は次のとおりです:

2 Le Dou
2 Le Dou
2 Le Dou

いくつか調べましたが、通常の合計 if ケースを使用してそれを理解できませんでした。それで、電話が切れた後、ネットユーザーの W さんに相談したところ、デジタル補助テーブルのアイデアを提供していただきました。

OK、完了しました。SQL は次のとおりです:

select t1.propid,t1.name from tb t1,(select 1 as num Union select 2 as num Union select 3 as num) t2 where t1.amount>= t2 .nu​​m order by 1;

真ん中の、(select 1 as num Union select 2 as num Union select 3 as num) t2部分

別のnum単一列を構築​​するのが最善です補助テーブルには、1 から N までの増分を指定するだけで、関連するクエリによって自己接続された SQL 判断が容易になります。Select には、ループ内で数値を生成する機能がないようです。次の表に示すように、番号

ここで友達を見つけて、より良い実装方法を持っている場合は、共有してください。

上記は、数値補助テーブルを使用して複雑な列変更を実装する MySQL の内容です。さらに関連する内容については、PHP 中国語 Web サイト (www.php.cn) に注目してください。


ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート