SELECT u.user_id, SUM(u.mutual)
FROM (SELECT first_user_id AS user_id, mutual
FROM userprofile_usercontact
UNION ALL
SELECT second_user_id AS user_id, mutual
FROM userprofile_usercontact
) AS u
GROUP BY user_id;
コメントに質問を尋ねる:
方法相互= 0のエントリを削除しますか?フィルタ条件を使用
、いつものように:それはクエリが書かれていたかのように実行しますので、オプティマイザが良く、UNIONクエリにダウン状態をプッシュするかもしれない
SELECT u.user_id, SUM(u.mutual)
FROM (SELECT first_user_id AS user_id, mutual
FROM userprofile_usercontact
UNION ALL
SELECT second_user_id AS user_id, mutual
FROM userprofile_usercontact
) AS u
WHERE u.mutual != 0 -- or u.mutual <> 0
GROUP BY user_id;
:
SELECT u.user_id, SUM(u.mutual)
FROM (SELECT first_user_id AS user_id, mutual
FROM userprofile_usercontact
WHERE mutual != 0
UNION ALL
SELECT second_user_id AS user_id, mutual
FROM userprofile_usercontact
WHERE mutual != 0
) AS u
GROUP BY user_id;
純粋な結果は、もちろん同じです。
ありがとう、どうすれば相互= 0のエントリを削除できますか? – David542
サブ選択を表として扱います。 'WHERE u.mutual> 0'を使って不要なエントリを取り除きます。 – vyegorov