0
votes

Données de table de copie TSQL sur une autre table avec des valeurs personnalisées

J'ai 2 tables avec des colonnes identiques attendez-vous à un utilisateur. Je souhaite copier toutes les données de la première table dans la seconde et ajouter un utilisateur personnalisé à la colonne qui manque. Jusqu'à présent, sans succès.

La requête est indiquée ci-dessous. Insérer la qualité, la quantité, le fournisseur et l'userid (qui n'existent pas dans la table im obtenue des données) xxx

toutes les données que je reçois de dbo.gaststation à insérer à dbo.newgastation ajoute cet userid personnalisé à tous les résultats.


0 commentaires

5 Réponses :


1
votes

au lieu de * code> répertoriez les colonnes de votre Sélectionnez CODE> explicitement et ajoutez la variable à cette liste.

DECLARE @userid integer = 5611;

INSERT INTO dbo.newgasstation
           (quality,
            quantity,
            supplier,
            userid)
           SELECT quality,
                  quantity,
                  supplier,
                  @userid
                  FROM dbo.gasstation;


4 commentaires

Ne fonctionne pas car @userid n'existe pas dans la station dbo.gas


@ S.minchev: oui ça fait. Vous pouvez ajouter autant d'expressions constantes que vous le souhaitez, ils n'ont pas besoin d'exister dans la table, ils ne peuvent même pas exister là-bas. Essayez juste.


Bien dire que le studio de gestion SQL "MSG 515, niveau 16, état 2, ligne 16 ne peut pas insérer la valeur null dans la colonne" UserID ", table 'go41_db.dbo.newgasstation'; la colonne ne permet pas aux nulls. Insérer échoue. Le déclaration a été résiliée. "


@stickybit. . . Wow. Exactement au même moment.



0
votes

Il suffit d'ajouter @userid code> à la liste CODE> SELECT CODE> LIST:

INSERT INTO dbo.NewGasStation (Quality, Quantity, Supplier, UserId)
    SELECT Quality, Quantity, Supplier, @UserId
    FROM dbo.GasStation ;


2 commentaires

Cela ne fonctionne pas, vous ne pouvez pas ajouter @userid à la fin de cette sélection, car il n'existe pas dans la station dbo.gas


@ S.minchev. . . Hein? C'est une constante. Bien sûr, vous pouvez l'inclure dans le Sélectionner .



0
votes
INSERT INTO dbo.NewGasStation (Quality, Quantity, Supplier, UserId)
SELECT Quality, Quantity, Supplier, '5611' FROM dbo.GasStation
should do the trick (assuming column names are the same for both tables)

0 commentaires

0
votes

Assurez-vous que la table Newgasstation n'existe pas lors de l'exécution de ce xxx


1 commentaires

Eh bien, le problème ici est qu'il y a déjà des données ajoutées, donc je ne peux pas faire ça :)



2
votes

Vous n'avez pas non plus besoin de discriminer les colonnes si vous souhaitez simplement les copier tout. Il suffit d'utiliser le * .

quelque chose comme ceci: xxx


0 commentaires