本文其实是标题党, 由于个人经历原因, 一直使用其他类型数据库, 自由 json 等数据类型的支持, 所以在遇到类似需求的时候总是要寻找一个和固有思维相匹配的解决方案.
需要的数据结构
1 | [ |
这样的话, 如果使用传统 mongodb, 那么肯定不会有任何迟疑, 问题是我们是 MySQL.
表结构设计
service 表
1 | CREATE TABLE blog_services ( |
address 表
1 | CREATE TABLE blog_address ( |
写一个 SQL
1 | SELECT |
执行结果为
1 | service other_key address |
剩下的事儿
将查询出来的数据, 在代码层 map 循环一下, 以 ,
分隔成数组即可.
这里需要注意的是, 默认 GROUP_CONCAT 方法是 ,
分隔的, 这就意味数据本身应该不包含 ,
. 如果需要自定义分割符,
GROUP_CONCAT(DISTINCT(a.address) SEPARATOR '|')