回答編集履歴
3
typo
answer
CHANGED
@@ -8,8 +8,8 @@
|
|
8
8
|
|
9
9
|
```SQL
|
10
10
|
create table tbl(id int not null primary key auto_increment
|
11
|
-
,uid int,name varchar(20),size
|
11
|
+
,uid int,name varchar(20),size int,hoge varchar(20)
|
12
|
-
|
12
|
+
,unique key(uid,name,size));
|
13
13
|
```
|
14
14
|
順次データ投入
|
15
15
|
```SQL
|
2
調整
answer
CHANGED
@@ -7,7 +7,9 @@
|
|
7
7
|
うまく動かないと言うのでsampleつけときます
|
8
8
|
|
9
9
|
```SQL
|
10
|
-
create table tbl(id int not null primary key auto_increment
|
10
|
+
create table tbl(id int not null primary key auto_increment
|
11
|
+
,uid int,name varchar(20),size in,hoge varchar(20)
|
12
|
+
t,unique key(uid,name,size));
|
11
13
|
```
|
12
14
|
順次データ投入
|
13
15
|
```SQL
|
1
sample
answer
CHANGED
@@ -1,4 +1,25 @@
|
|
1
1
|
> user_idとnameかsizeがuniqueKey
|
2
2
|
|
3
3
|
であれば複合unique属性で「user_id,name,size」で
|
4
|
-
設定してみてはどうでしょうか?
|
4
|
+
設定してみてはどうでしょうか?
|
5
|
+
|
6
|
+
#sample
|
7
|
+
うまく動かないと言うのでsampleつけときます
|
8
|
+
|
9
|
+
```SQL
|
10
|
+
create table tbl(id int not null primary key auto_increment,uid int,name varchar(20),size int,unique key(uid,name,size),hoge varchar(20));
|
11
|
+
```
|
12
|
+
順次データ投入
|
13
|
+
```SQL
|
14
|
+
insert into tbl(uid,name,size,hoge) values(1,'aaa',100,@a:='hoge1')
|
15
|
+
on duplicate key update hoge=@a;
|
16
|
+
insert into tbl(uid,name,size,hoge) values(1,'aaa',200,@a:='hoge2')
|
17
|
+
on duplicate key update hoge=@a;/*uidとnameが一緒だけどsizeが違うのでOK*/
|
18
|
+
insert into tbl(uid,name,size,hoge) values(1,'bbb',100,@a:='hoge3')
|
19
|
+
on duplicate key update hoge=@a;/*uidとsizeが一緒だけどnameが違うのでOK*/
|
20
|
+
insert into tbl(uid,name,size,hoge) values(1,'aaa',100,@a:='hoge4')
|
21
|
+
on duplicate key update hoge=@a;/*uidとsizeとnameが一緒なのでhogeを更新*/
|
22
|
+
insert into tbl(uid,name,size,hoge) values(2,'aaa',100,@a:='hoge5')
|
23
|
+
on duplicate key update hoge=@a;/*sizeとnameが一緒だけどuidが違うのでOK*/
|
24
|
+
|
25
|
+
```
|