テーブル「s_msgs」があり、その構造は
id | from | to
------------------
1 | John | Robert
2 | John | Michael
3 | Robert | John
4 | Michael | John
すべてのメッセージの送信者と受信者のペアを取得する必要があります。つまり、結果は
John | Robert
John | Michael
私はクエリを書きますが、これは最適なバリアントではないと思います。さらに、テーブルで数百万行になることが予想されるので、誰でもより最適なクエリを教えてもらえますか?
これは私の質問です
SELECT `from`,`to` FROM s_msgs WHERE id IN(
SELECT id FROM (
SELECT MIN(id) AS id,
CASE
WHEN STRCMP(`to`,`from`) = -1 THEN CONCAT(`to`,`from`)
ELSE CONCAT(`from`,`to`)
END
AS conc
FROM s_msgs
GROUP BY conc
) AS t
)