Поиск повторяющихся значений в MySQL

Я использую эту функцию для своих проектов:

 public static String minuteToTime(int minute) {
    int hour = minute / 60;
    minute %= 60;
    String p = "AM";
    if (hour >= 12) {
        hour %= 12;
        p = "PM";
    }
    if (hour == 0) {
        hour = 12;
    }
    return (hour < 10 ? "0" + hour : hour) + ":" + (minute < 10 ? "0" + minute : minute) + " " + p;
}
720
задан Jon Tackabury 27 March 2009 в 04:22
поделиться

5 ответов

Сделайте a SELECT с a GROUP BY пункт. Скажем, имя является столбцом, в котором Вы хотите найти дубликаты:

SELECT name, COUNT(*) c FROM table GROUP BY name HAVING c > 1;

Это возвратит результат со значением имени в первом столбце и количество того, сколько раз то значение появляется во втором.

1467
ответ дан 22 November 2019 в 21:29
поделиться
SELECT ColumnA, COUNT( * )
FROM Table
GROUP BY ColumnA
HAVING COUNT( * ) > 1
1
ответ дан 22 November 2019 в 21:29
поделиться

Принятие Вашей таблицы называют TableABC и столбцом, который Вы хотите, столбец, и первичный ключ к T1 является Ключевым.

SELECT a.Key, b.Key, a.Col 
FROM TableABC a, TableABC b
WHERE a.Col = b.Col 
AND a.Key <> b.Key

Преимущество этого подхода по вышеупомянутому ответу - это, дает Ключ.

11
ответ дан 22 November 2019 в 21:29
поделиться
SELECT  *
FROM    mytable mto
WHERE   EXISTS
        (
        SELECT  1
        FROM    mytable mti
        WHERE   mti.varchar_column = mto.varchar_column
        LIMIT 1, 1
        )

Этот запрос возвращает полные записи, не просто отличные varchar_column.

Этот запрос не использует COUNT(*). Если существует много дубликатов, COUNT(*) является дорогим, и Вам не нужно целое COUNT(*), просто необходимо знать, существует ли две строки с тем же значением.

Наличие индекса на varchar_column конечно, ускорит этот запрос значительно.

164
ответ дан 22 November 2019 в 21:29
поделиться
SELECT varchar_col
FROM table
GROUP BY varchar_col
HAVING COUNT(*) > 1;
219
ответ дан 22 November 2019 в 21:29
поделиться
Другие вопросы по тегам:

Похожие вопросы: