-2
votes

Comment insérer les données d'une table de sous-ensemble dans une table Superset à l'aide d'une instruction SELECT?

J'essaie de faire une requête dynamique où je veux insérer des données dans la table SuperSet de la table sous-ensemble.

Voici mes tables p>

insert into B (select * from A); 


2 commentaires

Utilisez-vous MySQL ou Oracle? Pourquoi doit-il être une procédure stockée?


@jarih J'utilise MySQL et j'essaie de mettre en œuvre cette logique dans une procédure stockée.


4 Réponses :


1
votes

Par défaut, un instruction insert s'attend à ce que toutes les colonnes cibles soient fournies. Vous pouvez modifier cela en énumérant les colonnes que vous souhaitez insérer. Ceci est une bonne pratique que vous devriez vous en tenir à rester, car cela rend les requêtes plus faciles à lire et à entretenir.

Vraisemblablement, vous voulez: < Pré> xxx


1 commentaires

Oui, mais comme je l'ai mentionné, je veux créer une requête dynamique où je n'ai pas besoin de mentionner les noms de colonne afin qu'il fonctionne pour plus d'un ensemble de tables.



1
votes

Vous devez cartographier les colonnes afin qu'ils puissent correspondre. Voir la documentation

Essayez celui-ci: < / p> xxx


1 commentaires

Oui, mais comme je l'ai mentionné, je veux créer une requête dynamique où je n'ai pas besoin de mentionner les noms de colonne afin qu'il fonctionne pour plus d'un ensemble de tables.



0
votes

Insérer dans les valeurs B (ID, EMPLENAMALE) (SELECT * à partir de A); // Cela fonctionnera uniquement si la contrainte NotNull n'est pas définie sur Empid.

C'est la requête la plus dynamique. que vous pouvez avoir pour cette situation. Nous avions mentionné les noms de colonnes du tableau B parce que vous fournissez des valeurs de seulement 2 colonnes. Si vous ne voulez pas utiliser le nom de la colonne, vous avez besoin de des données restantes dans une autre table et de modifier le tableau B un peu. xxx

Vous pouvez maintenant exécuter la requête: Insérer dans les valeurs B (Sélectionnez * à partir d'une jointure interne C sur a.id = c.Id); Cela remplira votre table A.


0 commentaires

0
votes

Ceci est la solution finale qui a fonctionné pour moi car ID est une colonne d'incrémentation automatique et si vous entrez NULL dessus, rien ne change.

Insérer dans B (Sélectionnez NULL, A. * à partir de A);


0 commentaires