[mysql] выборка одинаковых значений

Тема в разделе "Базы данных", создана пользователем zaartix, 16 июл 2008.

Статус темы:
Закрыта.
Модераторы: latteo
  1. zaartix

    zaartix Постоялец

    Регистр.:
    15 май 2006
    Сообщения:
    73
    Симпатии:
    27
    есть таблица слов, одно из полей - к примеру значение soundex для слова. Как выбрать все слова, у которых одинаковые soundex?
     
  2. BACZ

    BACZ

    Регистр.:
    18 июн 2008
    Сообщения:
    608
    Симпатии:
    381
    soundex задается заранее и надо выбрать слова у которых именно этот soundex или надо выбирать все комплекты - типа комплект с первым soundex, комплект c другим soundex и так до конца вариантов?
    если soundex знаешь заранее тогда
    select * from word_table where soundex='заранее_заданный'

    если не знаешь заранее то с подзапросом, кстати а версия какая mysql?
     
  3. awp

    awp Читатель

    Заблокирован
    Регистр.:
    20 июл 2008
    Сообщения:
    7
    Симпатии:
    2
    меняй и используй.
    select * from forum_users
    where group_id in (select group_id from forum_users group by group_id having count(group_id) > 1)
    order by group_id

    group_id - поле содержащие одинаковые значения и не только
     
    zaartix нравится это.
  4. gregzem

    gregzem

    Регистр.:
    21 окт 2007
    Сообщения:
    200
    Симпатии:
    63
    Не рекомендую делать вложенные подзапросы в MySQL. Нереально медленно работает на больших наборах данных. У меня в CMS выборка из таблицы, в которой было 2000 строк с использованием подзапроса длилось 20 секунд. Разделил подзапросы на два запроса - в итоге менее секунды.

    И я, кстати, не одинок


    http://www.phpbuilder.com/board/showthread.php?t=10311154
    http://www.programmingtalk.com/showthread.php?t=9817
    http://www.google.ru/search?complete=1&hl=ru&newwindow=1&q=mysql+subquery+work+slowly&lr=&aq=2
     
    Simpson нравится это.
  5. awp

    awp Читатель

    Заблокирован
    Регистр.:
    20 июл 2008
    Сообщения:
    7
    Симпатии:
    2
    на Оракле показывает иное... Ведь запрос выполняется с низу вверх. В мускле не писал такого - думал что и тут тот же принцип. gregzem - Возможно в запросе использовался "not" ?
     
  6. Pedr0

    Pedr0 Создатель

    Регистр.:
    28 авг 2008
    Сообщения:
    17
    Симпатии:
    0
    Если кому актуально я пользовал таким запросом

    select count(FIELD) from TABLE group by FIELD having count(FIELD)>1;
    вместо FIELD и TABLE свои данные.
    хорош тем что не имеет запросов в запросе, насчет скорости выполнения не проверял, но должно работать без проблем.
     
Статус темы:
Закрыта.