За последние 24 часа нас посетили 23749 программистов и 1716 роботов. Сейчас ищут 1835 программистов ...

Выбрать уникальные записи

Тема в разделе "MySQL", создана пользователем sokol86922, 19 апр 2017.

  1. sokol86922

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

    С нами с:
    3 мар 2017
    Сообщения:
    46
    Симпатии:
    2
    Есть запрос который выбирает все записи в определенном диапазоне дат. Работает , но я столкнулся с проблемой. У меня есть еще после email в нем бывают часто одинаковые емайлы.
    Как сделать так чтобы в этом диапазоне дат выбиралась только одна строчка с один емайлом .

    Вроде можно с DISTINCT но нужно вместо * указать конкретный столбец а мне нужны все выбирать и потом их обрабатывать

    Код (Text):
    1. SELECT * FROM  `infodate`  where `date` BETWEEN '".$date1."' AND '".$date2."' ORDER by `date`
     
  2. denis01

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

    С нами с:
    9 дек 2014
    Сообщения:
    12.227
    Симпатии:
    1.714
    Адрес:
    Молдова, г.Кишинёв
    Попробуй group by по email
     
  3. sokol86922

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

    С нами с:
    3 мар 2017
    Сообщения:
    46
    Симпатии:
    2
    Да получилось

    Можете объяснить в чем разница между GROUP BY `infodate`.`email` и GROUP BY `email`
    работает так и так . я понимаю что вначале указываем имя таблицы. Это будет ошибкой если я не укажу сначало таблицу?

    Код (Text):
    1. SELECT DISTINCT * FROM  `infodate`  where `date` BETWEEN '".$date1."' AND '".$date2."' GROUP BY `infodate`.`email`
     
  4. Abyss

    Abyss Старожил

    С нами с:
    12 дек 2015
    Сообщения:
    1.298
    Симпатии:
    218
    Адрес:
    Default city
    Имя таблицы нужно указывать, когда в запросе имеются несколько таблиц с потенциально одинаковыми названиями столбцов. Для удобства можно использовать алиасы.
    Код (Text):
    1. select a.*, b.id from table1 a left join table1 b on b.id = a.id;