2017-09-04 6 views
-1

を追加し、私のクエリを見てみましょう:INSERT&コラム

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

select文はsessionsにプッシュするのに十分なデータが含まれていません。つまり、パラメータ(?)としてactionTypeを挿入したいのですが、これはselect文の結果の右側に列を追加する必要があります。これはどのように機能するのですか?

+0

同じアクションタイプか、違うのですか? – jarlh

+0

@jarlhは毎回異なります。これをパラメータにしたい – Zarkopafilis

答えて

1

あなたが選択するのmysqlにダミーの値を使用することができます。

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

異なるパラメータのためにあなたはまた、内部選択クエリを選択し使用することができます

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はパラメータとして別のactionType値を必要とします。 – jarlh

+0

ありがとう!期限が切れるとすぐに受け入れます。私はパラメータとして設定できると思いますか? – Zarkopafilis

+0

@ Zarkopafilis、あなたは "毎回違うと言いました。私はこれをパラメータにします" ... – jarlh

1

クエリがプロシージャ内に存在すると仮定すると、あなたは、これらのパラメータを追加することができます。

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