2013-12-14 4 views
0

Я нашел еще одну тему с этим похожим вопросом, но запрос почему-то не работал на меня по той или иной причине.SQL Подсчет и упорядочение по повторяющимся строкам

У меня есть таблица, например, так:

ид | 1 1 5 3 5

мне нужно использовать только SQL, чтобы эхо из наиболее дублируется номер

Например, что бы выход:

идентификатор | 1 5 3 5

Если это имеет смысл.

Как бы я мог достичь этого?

Спасибо большое

+2

Ваш пример не имеет смысла –

ответ

0

ВОЗВРАТ РАЗ UNIQUE идентификаторами

SELECT DISTINCT id FROM myTable 

ID | 
--------------- 
1 | 
5 | 
3 | 

См DEMO

ВОЗВРАЩЕНИЕ ТОЛЬКО САМЫЙ дублируется ID отсчетом

SELECT id, COUNT(id) AS Duplicates FROM test 
GROUP BY id 
ORDER BY Duplicates DESC 
LIMIT 1; 

ID | Duplicates 
--------------- 
1 | 2 

// without the LIMIT clause 

ID | Duplicates 
--------------- 
1 | 2 
5 | 2 
3 | 1 

См. DEMO

Или, как вы видите выше, могут быть два идентификатора, которые были дублированы одинаковое количество раз. Вы можете сделать это, что бы вернуть оба самые высокие дублированные идентификаторы, если они равны:

SELECT id, COUNT(id) AS Duplicates 
FROM test 
GROUP BY id 
HAVING COUNT(id) = (
    SELECT COUNT(id) AS great 
    FROM test 
    GROUP BY id 
    ORDER BY great DESC 
    LIMIT 1 
) 

ID | Duplicates 
--------------- 
1 | 2 
5 | 2 

См DEMO

ВОЗВРАТ РАЗ UNIQUE идентификаторы В ЧИСТОЙ PHP

$results = // query 
$results = array_unique($results); 
+0

я не использовали любые методы подсчета, как ваш пример выхода не показывают какой-либо счет. Я просто возвращаю уникальные идентификаторы, так как считаю, что на самом деле ваша цель. Надеюсь, поможет. – TheCarver

+0

Обратите внимание, что если вы выберете больше столбцов, таких как 'select different id, c2, c3', это выберет отдельную ** строку **, а не отдельные значения id. Опасайтесь :-) – Bell

+0

@Bell, вы совершенно правы. В его примере использовался только один столбец, поэтому мой ответ был дан именно для этого. Я на самом деле думаю, что ваш ответ лучше, поскольку объяснение OP описывает только то, что вы предоставили, но его примерный результат был совершенно другим. Смущенный :/ – TheCarver

0

использования группа вместе со счетом, например:

select * from t group by id order by count(id) desc 

И добавить предельное условие для того, чтобы получить один наиболее дублируется значение:

select * from t group by id order by count(id) desc limit 1 
Смежные вопросы