ある日、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 .num 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) に注目してください。