どうもmiyachi(@_38ch)です。
MySQLのJOINにLIKEを使う方法をご紹介します。
例えば以下のような二つのテーブルがあったとします。
table1: user_info
user_id | name | address |
---|---|---|
1 | 小田常雄 | 香川県 仲多度郡多度津町 東浜 1-14-12 |
2 | 松井昭司 | 鳥取県 米子市 淀江町小波 4-16-13 |
3 | 田中美涼 | 大阪府 守口市 大久保町 3-3-10 |
4 | 有賀沙也佳 | 宮城県 刈田郡七ヶ宿町 矢立 1-13 |
5 | 寺島勇次 | 大分県 中津市 片端町 4-5 |
table2: prefecture
pref_id | pref_name | pref_population |
---|---|---|
1 | 北海道 | 5,348,102 |
2 | 青森 | 1,278,581 |
... | ... | ... |
46 | 鹿児島 | 1,625,434 |
47 | 沖縄 | 1,447,134 |
で、 user_info
のaddressを見て、prefecture
のpref_nameでLIKE検索かけて、人口をJOINさせてあげたい。(ここでLEFT()でaddressから都道府県名取ればいいじゃんって話は受け付けません)
SQLはこうやって書くらしい
SELECT
t1.user_id,
t1.user_name,
t1.address,
t2.pref_population
FROM
user_info t1
LEFT JOIN
prefecture t2
ON t1.address LIKE CONCAT(t2.pref_name, '%')
まさかCONCATを使って、LIKE検索の %keyword%
のやつを作るとは・・・