我认为您在这里需要两个 CASE
表达式,因为您在两列上进行分组:
GROUP BY CASE WHEN sender_id < receiver_id THEN sender_id
ELSE receiver_id
END,
CASE WHEN sender_id < receiver_id THEN receiver_id
ELSE sender_id
END,
如果您使用的是 MySQL,请考虑使用LEAST()
,GREATEST()
技巧:
SELECT LEAST(sender_id, receiver_id), GREATEST(sender_id, receiver_id)
FROM yourTable
GROUP BY LEAST(sender_id, receiver_id), GREATEST(sender_id, receiver_id)
在 SQLite 中,您可以使用MAX()
和MIN()
作为标量函数:
SELECT MIN(sender_id, receiver_id), MAX(sender_id, receiver_id)
FROM yourTable
GROUP BY MIN(sender_id, receiver_id), MAX(sender_id, receiver_id)