回答編集履歴

1

sample

2018/03/27 06:32

投稿

yambejp
yambejp

スコア114843

test CHANGED
@@ -1,3 +1,47 @@
1
1
  そういう場合は都道府県名を羅列したテーブルを用意して
2
2
 
3
3
  INNER JOINすればいいでしょう
4
+
5
+
6
+
7
+ # sample
8
+
9
+ - 元データ
10
+
11
+ ```SQL
12
+
13
+ create table pref(pid int unique,pname varchar(10));
14
+
15
+ insert into pref values(1,'北海道'),(2,'東京都'),(3,'神奈川県'),(4,'大阪府');
16
+
17
+ create table user(uid int unique,uname varchar(10),address varchar(100));
18
+
19
+ insert into user values(1001,'佐藤','東京都新宿区ほげほげ'),(2,'鈴木','東京都渋谷区ほげほげ'),(3,'吉田','品川区ほげほげ'),(4,'田中','神奈川県横浜市ほげほげ');
20
+
21
+ ```
22
+
23
+ - 集計
24
+
25
+ ```SQL
26
+
27
+ select pname,count(*) as cnt
28
+
29
+ from pref as t1
30
+
31
+ inner join user as t2 on t2.address regexp concat('^',t1.pname)
32
+
33
+ group by pname;
34
+
35
+ ```
36
+
37
+ - 更新
38
+
39
+ ```SQL
40
+
41
+ update pref as t1,user as t2
42
+
43
+ set t2.address=substr(t2.address,char_length(t1.pname)+1)
44
+
45
+ where t2.address regexp concat('^',t1.pname);
46
+
47
+ ```