2017-02-13 9 views
0

Так что я очень новичок в sql и нуждаюсь в некоторой помощи. У меня есть внутренний код из 3 таблиц:Выбирайте только дубликаты из внутренней таблицы

SELECT * 
FROM Activity 
Inner UserActivity on UserActivity.activity_id = Activity.activity_id 
Inner Join User on UserActivity.user_id = User.user_id 
; 

Из этого кода он создает мега-таблицу, что отлично. Но теперь я хочу выбрать только повторяющиеся записи для 6 столбцов, activity_name, activity_time, user_id, email, first_name и фамилии. Я хотел бы сгруппировать их по активности_time.

Этих конкретных колонн выглядеть следующим образом:

activity_name activity_time user_id email   first_name last_name 
Reading  00:00:15  10001  [email protected] Mike   Porter 
Share   00:01:10  10765  [email protected] Jamie  Hollands 
Like   23:15:00  15761  [email protected] Ragav  Taylor 
Tweet   07:59:01  17001  [email protected] Julie  Smith 

Как я могу это сделать?

Спасибо!

+4

Просьба показать образец ввода и вывода, неясно, что вы хотите здесь. –

+0

Покажите нам пример данных и ожидаемый результат. \t Пожалуйста, прочитайте [** How-to-Ask **] (http://stackoverflow.com/help/how-to-ask) \t \t И вот отличное место для [** START **] (http://spaghettidba.com/2015/04/24/how-to-post-at-sql-question-on-a-public-forum/), чтобы узнать, как улучшить качество вопроса и получить лучшие ответы. –

+0

Вы должны показать нам три вещи: что у вас есть, что вы хотите и какую логику использовать для этого. –

ответ

3

Вы можете использовать комбинацию COUNT, GROUP, HAVING для фильтрации повторяющихся строк.

SELECT activity_name, activity_time, user_id, email, first_name, last name, COUNT(*) 
FROM Activity 
INNER JOIN UserActivity on UserActivity.activity_id = Activity.activity_id 
INNER JOIN User on UserActivity.user_id = User.user_id 
GROUP BY activity_name, activity_time, user_id, email, first_name, last name 
HAVING COUNT(*)>1 
+0

вам нужно 'group by –

+0

O да, вы правы Я забыл спасибо –