2016-12-21 2 views
0

У меня есть таблица под названием options со следующими данными:Как узнать количество столбцов в нескольких группах с помощью MySQL?

id|content|index| question_id 
---------------------------- 
1 | yes | 1 | 123 
2 | no | 2 | 123 
3 | maybe | 1 | 123 
4 | yeah | 2 | 124 
5 | yep | 1 | 124 
6 | nope | 1 | 125 
7 | no | 2 | 125 
8 | yessir| 1 | 125 

Каждый параметр отображается на вопрос MCQ на question_id. Невозможно дублировать индексы для вопроса. Я хочу узнать количество вариантов с повторяющимися индексов на фоне того же question_id

Вот как я пытаюсь сделать это:

SELECT 
    count(index) as c, 
    question_id 
from options 
group by question_id, index having c > 1 

Однако, я не кажется, чтобы получить результат Я ищу.

Я хочу, чтобы получить следующие строки окликнули:

id | content | index | question_id 
----------------------------------- 
3 | maybe | 1  | 123 
8 | yessir | 1  | 125 

Кроме того, следующий набор результатов поможет, а также:

question_id | duplicates 
------------------------- 
123   | 2 
125   | 2 
+4

Просто, чтобы сделать все более ясным, каков ожидаемый результат для таблицы образцов, которую вы предоставили? – Mureinik

+0

Узел UNIQUE KEY на столбцах 'index' и' question_id' рекомендуется сохранять в будущем. – Pred

+0

@Mureinik добавил ожидаемый результат. –

ответ

1
select question_id, sum(dups) dups from ( 
SELECT 
    question_id, 
    option_index, 
    count(option_index) dups 
from options 
group by question_id, option_index 
having count(option_index) > 1) 
group by question_id; 
1
SELECT 
    question_id, 
    count(index) as duplicates 
from options 
group by question_id, option_index having count(index) > 1 

count использования функции. Псевдонимая колонка c не доступна в пункте having.

Смежные вопросы