1

次の構造を持つ friends という名前のテーブルがあります。

id, from_id, to_id, confirmed, ....

このテーブルには、すべてのユーザーのすべての友達のリストが含まれています。from_id と to_id にはユーザーの ID が含まれており、from_id は実際に友達リクエストを送信したユーザーです。

ここで、特定のユーザーのすべての友達のリストを選択する必要があります。

次のクエリまたはユニオンを使用したクエリを使用して実行することをお勧めします。

"select (from_id + to_id)- $user_id as friend_id, ... from friends where from_id=$user_id or to_id=$user_id"
4

3 に答える 3

1

私はあなたの数学ファンの解決策が大好きですが、オーバーフローの問題を考慮していないと思います。例:2つの非常に大きな数を追加するとどうなりますか?

それとは別に、ソリューションは数値のuser_idに依存しています。ユニオンの使用にはもう少し時間がかかる場合がありますが(確認のためにテストする必要があります)、どのデータ型でも機能します。

于 2012-04-06T19:19:30.923 に答える
1

私は a を使用します (とunionにインデックスがあることを確認してください):from_idto_id

select from_id from friends where to_id = $user_id
union
select to_id from friends where from_id = $user_id

私の意見では、この方法の方が明確です。

于 2012-04-06T18:56:05.423 に答える
1

IDにキーがあると仮定すると、ユニオンは確かに良くなり、算術演算を実行します。

于 2012-04-06T18:56:40.653 に答える