За последние 24 часа нас посетили 21386 программистов и 1021 робот. Сейчас ищут 716 программистов ...

Вывод одинаковых записей из таблици mysql

Тема в разделе "MySQL", создана пользователем multik, 10 дек 2013.

  1. multik

    multik Новичок

    С нами с:
    6 дек 2013
    Сообщения:
    8
    Симпатии:
    0
    Помогите пожалуйста, как вывести повторяющие(одинаковые) записи из таблицы mysql ???
    Например :
    Имеется таблица "table" и в ней строка "title".
    Как осуществить проверку и вывести повторяющие(одинаковые) значения "title"?
    Заранее СПАСИБО!!!
     
  2. igordata

    igordata Суперстар
    Команда форума Модератор

    С нами с:
    18 мар 2010
    Сообщения:
    32.410
    Симпатии:
    1.768
  3. multik

    multik Новичок

    С нами с:
    6 дек 2013
    Сообщения:
    8
    Симпатии:
    0
    ???
    На сколько я знаю COUNT подсчитывает количество записей в таблице, но как узнать какую именно мне запись нужно искать (ведь я не знаю заранее какая повторяется)?
    Или в цикле : брать 1-ю запись+сравнивать с остальными и если есть то выводить.
    Потом 2-ю, 3-ю и тд ???
     
  4. immortal.1986

    immortal.1986 Активный пользователь

    С нами с:
    24 сен 2013
    Сообщения:
    257
    Симпатии:
    0
    GROPE BY
    вывидет только уникальные зписи повторяющие не выводит
     
  5. igordata

    igordata Суперстар
    Команда форума Модератор

    С нами с:
    18 мар 2010
    Сообщения:
    32.410
    Симпатии:
    1.768
    SELECT COUNT(DISTINCT Title) FROM HumanResources.Employee;

    там же есть пример по ссылке
     
  6. multik

    multik Новичок

    С нами с:
    6 дек 2013
    Сообщения:
    8
    Симпатии:
    0
    Не ужели так сложно написать по нормальному ???
    Что это за ответ: SELECT COUNT(DISTINCT Title) FROM HumanResources.Employee; , где оператор вывода (к примеру echo) или хотя бы какая ни будь переменная !!???
    Я же спрашивал как вывести повторяющие(одинаковые) значения "title" из таблицы "table" !!!!
    Найти в инете материал на эту тему я и сам могу , но если спрашиваю значит не могу в нем разобраться!!!
    Догадываюсь, что код не большой (в несколько строк) и времени для знающего много не займет.
     
  7. romach

    romach Старожил

    С нами с:
    26 окт 2013
    Сообщения:
    2.904
    Симпатии:
    719
    А зачем вам это нужно?
     
  8. multik

    multik Новичок

    С нами с:
    6 дек 2013
    Сообщения:
    8
    Симпатии:
    0
    Хочу почистить таблицу - удалить одинаковые записи (оставить только 1).
     
  9. artoodetoo

    artoodetoo Суперстар
    Команда форума Модератор

    С нами с:
    11 июн 2010
    Сообщения:
    11.072
    Симпатии:
    1.237
    Адрес:
    там-сям
    Это раздел "MSSQL"
    Тема "Вывод одинаковых записей из таблици mysql"
    это уже ошибка! :)

    тебя интересует как можно автоматически удалить все дубликаты (и оставить, например, только те у которых наименьший id)?
    или ты хочешь вручную всё делать?

    p.s. начал было писать запрос, но понял, что лучше у тебя спросить структуру таблицы. а еще лучше создай тестовую среду в http://sqlfiddle.com/

    Добавлено спустя 4 минуты 45 секунд:
    по идее как-то так должно работать:
    Код (Text):
    1. SELECT x.*
    2. FROM mytable AS x
    3. WHERE x.myfield IN (
    4.   SELECT y.myfield
    5.   FROM mytable AS y
    6.   GROUP BY y.myfield
    7.   HAVING COUNT(*) > 1
    8. )
    group by having count всему голова ;)
     
  10. igordata

    igordata Суперстар
    Команда форума Модератор

    С нами с:
    18 мар 2010
    Сообщения:
    32.410
    Симпатии:
    1.768
    а больше ничего не надо? это форум программистов, раздел по MSSQL. Если не умеешь работать с запросами, начни с чего по-проще. Делать за тебя твою работу бесплатно тут никто не будет.
     
  11. romach

    romach Старожил

    С нами с:
    26 окт 2013
    Сообщения:
    2.904
    Симпатии:
    719
    хм... тогда лучше так:
    Код (Text):
    1.  
    2. SELECT GROUP_CONCAT(`id`) FROM `table`
    3. WHERE `id` NOT IN (
    4.   SELECT `id` FROM `table` GROUP BY `title`
    5. )
    На выходе должны получить id повторяющихся записей за исключением какого-то одного. Результат можно сразу в DELETE отправить. Как замутить одним запросом сходу не скажу.
     
  12. artoodetoo

    artoodetoo Суперстар
    Команда форума Модератор

    С нами с:
    11 июн 2010
    Сообщения:
    11.072
    Симпатии:
    1.237
    Адрес:
    там-сям
    можно замутить удаление, только надо определить критерии что именно должно остаться.
     
  13. multik

    multik Новичок

    С нами с:
    6 дек 2013
    Сообщения:
    8
    Симпатии:
    0
    Сам спросил и сам ответил )))))
    Короче сделал так (перебор 2-х массивов) :
    Код (Text):
    1. $r = mysql_query("SELECT * FROM table");
    2. $myrow = mysql_fetch_array($r);
    3. do {   
    4.       $id=$myrow['id'];
    5.       $r1 = mysql_query("SELECT * FROM table WHERE id!='$id'");
    6.       mysql_query("SET NAMES 'cp1251'");
    7.       $myrow2 = mysql_fetch_array($r1);
    8. do {
    9.     if ($myrow['title']==$myrow2['title']) {echo '# '. $myrow['id'].' - '. $myrow['title'].' <br>'; }
    10.      }
    11. while ($myrow = mysql_fetch_array($r));
    Всё работает отлично, но вот сколько, интересно, времени займет если к примеру 1млн. записей проверить ))))
     
  14. igordata

    igordata Суперстар
    Команда форума Модератор

    С нами с:
    18 мар 2010
    Сообщения:
    32.410
    Симпатии:
    1.768
    давай еще раз.

    Добавлено спустя 1 минуту:
    есть COUNT
    есть GROUP BY

    боишься их? =)
     
  15. multik

    multik Новичок

    С нами с:
    6 дек 2013
    Сообщения:
    8
    Симпатии:
    0
    Вместо того чтобы умничать просто бы взял и подсказал (а то уже пяток "никаких" ответов написал) !!!
    Форумы такой тематики для того и существуют, чтобы спрашивать и ,если знаешь, отвечать !!!
    Если ты заходишь сюда чтобы пообщаться, то тебе прямая дорога "Вконтакте" или "Одноклассники"!!!

    P.S: На счет "твоих" COUNT и GROUP BY ДЕРЖИ:
    Код (Text):
    1. $r = mysql_query("SELECT title, GROUP_CONCAT(id) as id FROM table GROUP BY title");
    2. $myrow = mysql_fetch_array($r);
    3. $i=0;
    4. do { $title[$i]=$myrow[0];$id[$i]=$myrow[1];     
    5.      $pos = strrpos($id[$i], ',');
    6.       if ($pos !== false) {echo $title[$i].'- Повтор! ID материалов : '.$id[$i].'<br>';}     
    7.      $i=$i+1;}
    8. while ($myrow = mysql_fetch_array($r));
    Мог ведь с самого начала примерно так написать, а не умничать попусту !!!
    Считаю тему можно закрыть
     
  16. romach

    romach Старожил

    С нами с:
    26 окт 2013
    Сообщения:
    2.904
    Симпатии:
    719
    Вот поможешь таким, попытаешься рассказать про COUNT и GROUP BY, а потом все вокруг говоряд о быдлопхп ))
     
  17. multik

    multik Новичок

    С нами с:
    6 дек 2013
    Сообщения:
    8
    Симпатии:
    0
    ))))) Это я не тебе адресовал !!!
     
  18. igordata

    igordata Суперстар
    Команда форума Модератор

    С нами с:
    18 мар 2010
    Сообщения:
    32.410
    Симпатии:
    1.768
    если тебе ответа "используй групбай" недостаточно хотя бы чтобы попытаться, то это твоя бяда, и никто не будет делать твою работу за тебя и тем более никто не будет учиться за тебя.
     
  19. dolben

    dolben Активный пользователь

    С нами с:
    30 июл 2010
    Сообщения:
    25
    Симпатии:
    1
    Искал в сети подобный вопрос и прочитав здесь переписку, реально аж не по себе стало. Вроде сайт и форум для вопросов созданы. А тут звучит за тебя работать никто не будет и так далее. И даже модератор тоже самое пишет. Фу. Какие-то ограниченные обиженные люди могут только так писать. Для меня выглядит так. Мы создали сайт для помощи, друг другу, но отвечать будем: За тебя работать никто не будет. А зачем тогда в модераторы набились сюда? Чтобы ЭГО свое поднять за счет других?
     
    Ololoshka нравится это.
  20. igordata

    igordata Суперстар
    Команда форума Модератор

    С нами с:
    18 мар 2010
    Сообщения:
    32.410
    Симпатии:
    1.768
    если человек впадает в истерику от того, что что-то не знает и не хочет понимать, а ждёт готовый результат - то он либо пусть платит, либо страдает. Помощь была вполне себе помогающая.
    --- Добавлено ---
    вот это капец вообще.
     
    askanim, Fell-x27 и denis01 нравится это.
  21. asizintsev

    asizintsev Новичок

    С нами с:
    11 янв 2018
    Сообщения:
    1
    Симпатии:
    1
    Я аж зарегистрировался! Вы действительно считаете послать человека по ссылке это помощь? Если вы считаете что это помощь, то я вообще не понимаю зачем вы сидите в модераторах. Некоторые люди не особо ладят с технической терминологией им труднее понять работу элементов запроса. Вместо того чтобы посылать по ссылке, написали бы часть код или весь и разжевали бы человеку как он работает, тогда вы и помогли и хорошее дело сделали рассказав понятным языком как это сделать.
     
    Ololoshka нравится это.
  22. Fell-x27

    Fell-x27 Суперстар
    Команда форума Модератор

    С нами с:
    25 июл 2013
    Сообщения:
    12.155
    Симпатии:
    1.769
    Адрес:
    :сердА
    Если вы забыли пароль от учетной записи @dolben, воспользуйтесь системой восстановления доступа.
     
  23. askanim

    askanim Старожил

    С нами с:
    7 апр 2016
    Сообщения:
    2.201
    Симпатии:
    166
    Адрес:
    GABRIEL
    Странно что тебя ещё в подвортню не спустили.
    --- Добавлено ---
    Тебе написали чёрным по белому. А то что ты не умеешь включать свои мозги. Люди в этом не виноваты. Напряги свои оставшиеся извилины и подумай над тем, что тебе подсказал
    @igordata
    Одинаковые записи можно сгруппировать в запросе с помощью GROUP BY А после получить их массив за счёт различных методов или функций php. Не понимаешь как сделать это? То ты ошибся разделом. Тебе в новички или вообще с твоими запросами в раздел сделай за меня.