Maison  >  Article  >  base de données  >  MySQL utilise des tables auxiliaires numériques pour implémenter des modifications de colonnes et de lignes complexes

MySQL utilise des tables auxiliaires numériques pour implémenter des modifications de colonnes et de lignes complexes

黄舟
黄舟original
2017-02-17 13:12:541451parcourir

Un jour, un internaute en cercle sur QQ a envoyé un message demandant de l'aide :

PropID name Montant
3 Yuanbao 2
2 Ledou 3

Pouvez-vous écrire la sortie dans un SQL, c'est-à-dire copier le nombre d'entrées correspondant au Montant :

Nom du PropID
3  Yuanbao
3  Yuanbao
2  Ledou
2  Ledou
2 Le Dou

[Note]:

3 Yuanbao 2
Note que la dernière colonne est 2, c'est-à-dire qu'il y a 2 de ces enregistrements. Elle devrait devenir
3 Yuanbao
3 Yuanbao
Supprimez la colonne du dernier nombre d'enregistrements et exprimez. le directement avec des lignes répétées, donc Selon cet exemple, 2 Le Dou 3, il faut répéter 3 enregistrements, comme suit :

2 Le Dou
2 Le Dou
2 Le Dou

Après quelques recherches, je n'arrivais pas à comprendre en utilisant un groupe par somme ordinaire si cas quand, j'ai donc dû changer d'avis . J'ai raccroché pendant un moment, alors j'ai parlé à l'internaute M.W. , qui a proposé l'idée de tables auxiliaires numériques.

OK, c'est fait, le SQL est le suivant :

sélectionnez t1.propid,t1.name à partir de tb t1, (sélectionnez 1 comme num union, sélectionnez 2 comme num union, sélectionnez 3 comme num) t2 où t1.amount>= t2.num ordre par 1

milieu, (sélectionnez 1 comme num union sélectionnez 2 comme num union select 3 as num ) t2 part

Il est préférable de créer une autre table auxiliaire num à une seule colonne, de passer de 1 à N, de lui donner simplement des dizaines de milliers, puis le la requête associée sera plus pratique À en juger par le SQL de l'auto-connexion, select ne semble pas avoir pour fonction de générer des nombres en boucle. Comme indiqué dans le tableau suivant, les numéros

Si vous voyez un ami ici et que vous avez une meilleure méthode de mise en œuvre, partagez-le.

Ce qui précède est le contenu de MySQL utilisant des tables auxiliaires numériques pour implémenter des changements de colonnes complexes. Pour plus de contenu connexe, veuillez faire attention au site Web PHP chinois (www.php.cn) !


Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn