回答編集履歴

1

sample

2016/11/28 06:27

投稿

yambejp
yambejp

スコア114850

test CHANGED
@@ -5,3 +5,51 @@
5
5
  更新日時は定形長でしょうから101個おさまる領域を用意しておいて
6
6
 
7
7
  投入後100個分になるよう更新すればよいでしょう
8
+
9
+
10
+
11
+ #修正
12
+
13
+ よくよく考えたら101個収まる領域は不要ですね
14
+
15
+ 100個になるとvarcharの範囲を超えるのでtextで処理します。
16
+
17
+ 確保する領域もtextなので無視してよいでしょう
18
+
19
+
20
+
21
+ 100個も例示できないのでとりあえず3個を上限とした場合
22
+
23
+ 日時の標準的なフォーマットを以下とすると
24
+
25
+ 2016-11-28 00:00:00・・・文字数=19、
26
+
27
+ これにセパレータをカンマとすると3個データ保持に必要なバイト数が
28
+
29
+ 20*3-1=59
30
+
31
+
32
+
33
+ 以下の例を参照してください
34
+
35
+ ```SQL
36
+
37
+ create table tbl(id int not null primary key,datetimes text(59));
38
+
39
+ insert into tbl values(1,(@a:='2016-11-28 00:00:00')) on duplicate key update datetimes=substring(concat(@a,',',datetimes),1,59);
40
+
41
+ insert into tbl values(1,(@a:='2016-11-28 01:00:00')) on duplicate key update datetimes=substring(concat(@a,',',datetimes),1,59);
42
+
43
+ insert into tbl values(1,(@a:='2016-11-28 02:00:00')) on duplicate key update datetimes=substring(concat(@a,',',datetimes),1,59);
44
+
45
+ insert into tbl values(1,(@a:='2016-11-28 03:00:00')) on duplicate key update datetimes=substring(concat(@a,',',datetimes),1,59);
46
+
47
+ insert into tbl values(1,(@a:='2016-11-28 04:00:00')) on duplicate key update datetimes=substring(concat(@a,',',datetimes),1,59);
48
+
49
+ ```
50
+
51
+
52
+
53
+ ちなみにtextに文字数制限はできませんのでsubstringを利用しています
54
+
55
+ 100個のデータを保持するならsubstringで指定するテキスト長は1999かな?