テーブルに対称関係がある場合、それをエレガントに表現するにはどうすればよいでしょうか? たとえば、 というテーブルがあり、そこにはFriend
2 人のユーザーのユーザー ID が含まれている必要があります。UID1
このテーブルでandを使用UID2
する場合、A_uid と B_uid がフレンドであるかどうかを調べたい場合は、使用する必要があります。
SELECT * FROM Friend WHERE (UID1 = A_uid AND UID2 = B_uid) OR (UID1 = B_uid AND UID2 = A_uid);
なぜならUID1
、 とUID2
は友情を表す点で同じだからです。このジレンマで最も重要なのは、UID1
とUID2
が対称であることです。
これは醜いので、もっと良い方法があるかどうか知りたいと思います。
ありがとう!