
1 alexsunxl 2018-06-14 16:14:27 +08:00 典型的想得太多, 做得太少, 哈哈哈 别纠结这些了, 最后还是看场景看业务看历史 这种东西没有最佳实践的,只能说相对较合适, 至于怎么是合适,那还是多积累吧 |
2 changrui0608 OP @alexsunxl 兄弟,我不是做的太少,我是做到这儿了不知道怎么办才来问的,你这话就和没说一样啊... |
3 infreboot 2018-06-14 17:01:19 +08:00 你可以换种方式,多查几次。别想着一条 SQL 查出来。。以前我也是想一条查出来,结果发现是为难自己 |
4 DavidNineRoc 2018-06-14 17:25:55 +08:00 看了一下 lv 的 SQL ## 先查询 posts 表 select * from posts where xxx ## 连接查询关联关系 SELECT `tags`.*, `post_tag`.`post_id` AS `pivot_post_id`, `post_tag`.`tag_id` AS `pivot_tag_id` FROM `tags` INNER JOIN `post_tag` ON `tags`.`id` = `post_tag`.`tag_id` WHERE `post_tag`.`post_id` IN (## 这里是 posts 表查询的数据 ## ) ## 然后将第二次查询的数据按照 pivot_post_id 分组,循环一遍 posts 查询出的数据,直接按 pivot_post_id 组设置为单个 posts 的属性。 |
5 AlphaTr 2018-06-14 17:41:41 +08:00 关系型数据库一次查询返回就会出现「 N 个 Tag 的 Post 就会重复出现 N 次」这种情况。一种方式就是你说的,手动编程排重;另一种方式就是多次查询。或者可以直接上非关系型数据库; |
6 changrui0608 OP @DavidNineRoc 多谢,查了一下午似乎是这种方法最合适,顺便 lv 全程是什么 |
7 cxbig 2018-06-14 18:17:39 +08:00 via iPhone 关键词:ORM eager loading 抓 SQL 看看人家怎么处理的就明白了 |
8 Foolt 2018-06-14 18:17:50 +08:00 MySQL 去重关键字 DISTINCT 了解一下 |
9 DavidNineRoc 2018-06-15 08:48:18 +08:00 @changrui0608 laravel |