どうも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% のやつを作るとは・・・