我想你需要 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()
作爲scalar functions:
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)
謝謝! Sqlite是否支持最小和最大? – Alessandro
「最少」和「最大」不是ANSI SQL,實際上也沒有廣泛支持。對於亞歷山德羅的目的來說,'case'是更好的選擇。 – Luaan
雙重CASE聲明正常工作!非常感謝你! – Alessandro