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