2017-02-22 2 views
0

1つのクエリで情報を更新して追加する必要があります。1つのクエリで挿入して更新する

ライバル現在、私は

INSERT INTO `competitor`(`ID`, `Name`, `Age`, `DiveNr`, `Difficulty`) 
VALUES(@idSql,@NameSql,@AgeSql,@DiveNrSql,@DiffSql) 

を使用しようとしてきたが、すぐに、これは不可能であったことに気づい

ID Name Age  DiveNr   Difficulty 
|----|-------|----|------------------|-----------| 
| 1 | Test | 22 | 000110,011111 | 3,5  | 
|____|_______|____|__________________|___________| 

-table。私が欲しいもの

特定のIDにDiveNrDifficultyに複数の項目を追加できるようにすることです。このような

ID Name Age  DiveNr    Difficulty 
|----|-------|----|----------------------|-----------| 
| 1 | Test | 22 | 000110,011111,230400 | 3,5,6  | 
|____|_______|____|______________________|___________| 

何か?

SELECT ID FROM competitor WHERE ID=1; 
INSERT INTO competitor(DiveNr,Difficulty)VALUES(@DiveNrSql,@DiffSql) 

これを行うにはどうすればいいですか?

+6

データ構造を修正してください。 IDのリストをコンマ区切りのリストに格納するのは、SQLのデータ格納方法ではありません。 –

+0

@GordonLinoff確かにそうではありませんが、それはC#の方法です – Joel

+0

私の本では、レコードを更新することが欲しいです。なぜあなたは挿入しようとしていますか? – Pikoh

答えて

0

まずその列の古い値を取得します: -

declare @oldDiveNrSql varchar(100) 
declare @oldDiffSql varchar(100) 

set @oldDiveNrSql = (select DiveNr from competitor where [email protected]) 
set @oldDiffSql = (select Difficulty from competitor where [email protected]) 

その後、新しい値で古い値を追加します -

declare @newDiveNrSql varchar(100) 
declare @newDiffSql varchar(100) 

set @newDiveNrSql [email protected]+','[email protected] 
set @newDiffSql [email protected]','[email protected] 

Finalyは、新しい値を使用して行を更新します -

update competitor set [email protected],[email protected] 
where [email protected] 
関連する問題