
1 onhao 2021-11-22 13:55:41 +08:00 mysql8 only_full_group_by 的解决办法 https://wuhao.pw/archives/179/ |
2 onhao 2021-11-22 13:59:48 +08:00 @Macv1994 "如果是 12 用户给其他用户发送的私信,如果对方没有回复的话" 那么 sender_id 是 12 ? mysql 好像 receiver_id = 12 这样 就行吧 不需要== 可能是我理解的问题, 这样不知可否 select * from t_message where receiver_id = 12 or sender_id=12 group by sender_id; |
3 cdcdc 2021-11-22 16:00:21 +08:00 如果只是为了去重,就用 select xxx, DISTINCT sender_id WHERE receiver_id = 12 |
6 qianProgrammer 2021-11-23 10:56:58 +08:00 select * from t_message where receiver_id = 12 UNION select * from t_message where sender_id = 12 |
7 mitsuizzz 2021-11-23 10:59:38 +08:00 发送人或者接收人 id 为 12 不就都查出来了,我理解一行对应一条私信,查出所有私信为什么还要分组 |
8 lybcyd 2021-11-23 13:45:10 +08:00 为什么需要 group by ,一个发送人只显示一条吗?能明确一下规则么 |
9 Macv1994 OP @mitsuizzz @lybcyd 我没有表述清楚,因为我要做一个类似微信聊天左侧侧边栏的效果 不知道是不是我想复杂了 https://2dogz.cn/backend/files/5076image.png |
11 DefineJ 2021-11-23 17:47:53 +08:00 |
12 DefineJ 2021-11-23 17:50:00 +08:00 |
13 lybcyd 2021-11-23 18:00:06 +08:00 via Android @Macv1994 那按照业务逻辑应该是需要时间倒序的,group by 排序我记得是没有保证的,查询非 group by 和非聚合字段也不符合 SQL 标准。 如果用的 MySQL8 可以用开窗函数,如果是 5.7 那就子查询按照对话双方来分组查询最新时间。 因为这里是对话,应该需要按照 receiver 和 sender 两个字段分组吧。 |