Copier des lignes dans MySQL
Je veux copier toutes les colonnes d'une ligne, mais ne pas avoir à préciser à chaque colonne. Je suis conscient de la syntaxe à http://dev.mysql.com/doc/refman/5.1/en/insert-select.html mais je ne vois aucun moyen d'ignorer une colonne.
Pour mon exemple, je suis en train de copier toutes les colonnes d'une ligne à une nouvelle ligne, à l'exception de la clé primaire.
Est-il un moyen de le faire sans avoir à écrire la requête avec tous les champs?
source d'informationauteur
Vous devez vous connecter pour publier un commentaire.
Si votre
id
ou colonne de la clé primaire est unauto_increment
vous pouvez utiliser une table temporaire:donc, de cette façon, vous pouvez copier toutes les données dans la ligne id='7' et ensuite affecter
nouvelle valeur de " 100 " (ou quelle que soit la valeur se situe au niveau de la gamme actuelle de votre valeur auto_increment dans source_table).
Edit: l'Esprit ; après les relevés 🙂
Vous aurez besoin de lister les colonnes que vous souhaitez sélectionner si vous n'êtes pas en les sélectionnant tous. Copier/Coller est votre ami.
C'est un script PHP que j'ai écrit pour ce faire, il faudra supposer que votre premier col est votre auto incrément.
Si vous ne spécifiez les colonnes que vous avez à garder les entrées dans l'ordre. Par exemple:
Pourrait fonctionner, mais
place l'e-Mail à la colonne ID de sorte qu'il n'est pas bon.
Essayez d'écrire les colonnes en une seule fois, comme:
Je pense qu'il y a une limite au nombre de lignes que vous pouvez insérer avec cette méthode.
Non, ce n'est pas possible.
Mais il est facile d'obtenir la liste des colonnes et il suffit de supprimer celui que vous ne voulez pas copier ce processus peut également être effectué à l'aide de code etc.
Copie de la table à nouveau, puis de supprimer la colonne que vous ne voulez pas. Simple.
Je suppose que, puisque vous voulez omettre la clé primaire que c'est un
auto_increment
colonne et vous souhaitez MySQL pour générer automatiquement la valeur suivante dans la séquence.Étant donné que, en supposant que vous n'avez pas besoin d'effectuer des insertions par l'insertion dans ... sélectionnez à partir de la méthode, le travail pour single/multi record inserts:
insert into matable (null, 'a', 'b', 'c');
Où la première colonne est votre
auto_incremented
clé primaire et les autres sont vos autres colonnes de la table. Lorsque MySQL voit une valeur null (ou 0) pour unauto_incremented
colonne, il remplacera automatiquement le nul à la prochaine valeur valide (voir ce lien pour plus d'informations). Cette fonctionnalité peut être désactivée par la désactivation de laNO_AUTO_VALUE_ON_ZERO
mode sql décrit dans ce lien.Laissez-moi savoir si vous avez des questions.
-Dipin