teratail header banner
teratail header banner
質問するログイン新規登録

回答編集履歴

1

sample

2018/03/27 06:32

投稿

yambejp
yambejp

スコア117892

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