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 两个字段分组吧。 |