2017-09-04 2 views
-1

Jetez un oeil à ma requête:INSERT INTO table SELECT et Append une colonne

INSERT INTO sessions (userId, workstationId, duration, actionType) 
    SELECT userId, workstationId, duration 
    FROM activeSessions 
    WHERE workstationId = ? 

L'instruction select ne contient pas suffisamment de données pour pousser dans sessions. Je veux également insérer un type d'action (en tant que paramètre (?), ce qui signifie que je dois ajouter une colonne à la droite du résultat de l'instruction select pour que cela fonctionne:

+0

Même actionType, ou différent? – jarlh

+0

@jarlh différent à chaque fois. Je veux que ce soit un paramètre – Zarkopafilis

Répondre

1

vous pouvez utiliser des valeurs fictives dans mysql sélectionnez:.

INSERT INTO sessions (userId, workstationId, duration, actionType) 
    SELECT userId, workstationId, duration, 'actionType' as actionType 
    FROM activeSessions 
    WHERE workstationId = ? 

Pour paramètre différent, vous pouvez également utiliser select dans requête de sélection

INSERT INTO sessions (userId, workstationId, duration, actionType) 
     SELECT userId, workstationId, duration, 
     (select id from actionTypeTable where id = ?) as actionType 
     FROM activeSessions 
     WHERE workstationId = ? 
+0

OP veut différentes valeurs d'actionType, en tant que paramètre. – jarlh

+0

Merci! Acceptera dès que la limite de temps s'éteint. Je suppose que je peux le configurer comme un paramètre? – Zarkopafilis

+0

@Zarkopafilis, vous avez dit "différent à chaque fois, je veux que ce soit un paramètre" ... – jarlh

1

en supposant que votre requête réside dans une procédure, vous pouvez ajouter ces paramètres.

INSERT INTO sessions (userId, workstationId, duration, actionType) 
    SELECT userId, workstationId, duration, @actionType 
    FROM activeSessions 
    WHERE workstationId = @workstationId