回答編集履歴
1
sample
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
|
+
```
|