Как выбрать не повторяющиеся строки?

Как правильно сделать запрос?

#1 12 августа 2014 в 22:03
Есть таблица:
Столбец userid1: 1,2,3,4,5,4,5,4,3,1,2
Столбец userid2: 2,2,2,3,3,1,1,5,3,1,2

Допустим это таблица истории отправки приватных сообщений одного пользователя к другому.
Какой запрос нужно сделать, чтобы выяснить сколько уникальных переписок (с разными пользователями) было у пользователя с id: 2 или с id: 3

p.s. попытался понятно изложить вопрос… как получилось…
#2 13 августа 2014 в 08:58
select COUNT(DISTINCT(user_id)) from table;
подсчет кол. уникальных значений user_id в таблице table;
вам остается лишь под себя отредактировать код
#3 15 августа 2014 в 07:36
Здравствуйте!
Ну по сути, вам необходимо это представить как два массива [[2,1],[2,2],[2,3],[3,4] ...] и еще один, с таким же содержанием. Берем их, и делаем мат. множество, и считаем сколько элементов в множестве:

SELECT COUNT(a.*) FROM (SELECT user_id, user_id2 FROM test_users WHERE user_id = 2 OR user_id2 = 2
UNION
SELECT user_id, user_id2 FROM test_users WHERE user_id2 = 2 OR user_id = 2) a;

Вопросы оптимизации запроса оставлю за вами =)

Успехов.

UPD:
Извините, некорректно дал вам ответ. Вот правильный запрос:

SELECT COUNT(a.*) FROM ((SELECT user_id2 FROM test_users WHERE user_id = 2 AND user_id2 <> 2 GROUP BY user_id2)
UNION ALL
(SELECT user_id FROM test_users WHERE user_id2 = 2 AND user_id <> 2 GROUP BY user_id)) a;
Вы не можете отвечать в этой теме.
Войдите или зарегистрируйтесь, чтобы писать на форуме.
Используя этот сайт, вы соглашаетесь с тем, что мы используем файлы cookie.