Выборка уникальных значений с приоритетом из конца таблицы

Тема в разделе "Базы данных", создана пользователем OffSpEEd, 12 янв 2015.

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

    OffSpEEd

    Регистр.:
    17 авг 2007
    Сообщения:
    159
    Симпатии:
    19
    Подскажите запрос. Например такая бд mysql:
    PHP:
    id from to
    1 ffff 12с3
    2 wwww 23s4
    3 ssss 45e6
    4 ssss 78r9
    5 ffff 00t2
    необходимо выбрать два значения (from, to)
    from выбрать уникальный, тот у которого id выше
    в пхп хотелось бы получить следующий массив:
    PHP:
    ffff 00t2
    wwww 23s4
    ssss 78r9
    средствами в php это легко сделать,
    но говорят, что если таблица большая то выборкой mysql запросами меньше нагрузка на сервер, по сравнению с обработкой в пхп..
     
    Последнее редактирование: 12 янв 2015
  2. akkela

    akkela Создатель

    Регистр.:
    17 дек 2014
    Сообщения:
    31
    Симпатии:
    4
    на вскидку
    select * from "table" group by from order by id desc
     
  3. OffSpEEd

    OffSpEEd

    Регистр.:
    17 авг 2007
    Сообщения:
    159
    Симпатии:
    19
    это не выдает последний уникальный 'from'
    desc на asc ситуацию не поменял..

    ну например вместо ожидаемого последнего ssss 78r9 выдает ssss 45e6
     
    Последнее редактирование модератором: 12 янв 2015
  4. akkela

    akkela Создатель

    Регистр.:
    17 дек 2014
    Сообщения:
    31
    Симпатии:
    4
    странно, вроде group by оставляло всегда последнее значение группы...
    ради смеха попробуй таблицу заменить на её селект сортированный по айди
     
  5. latteo

    latteo Эффективное использование PHP, MySQL

    Moderator
    Регистр.:
    28 фев 2008
    Сообщения:
    1.404
    Симпатии:
    1.185
    akkela подразумевал запрос:
    Код:
    SELECT * FROM (SELECT * FROM `gb_d` order by id DESC) as temp GROUP by `from`;
    
    Вот только, вместо того чтобы написать одну строчку на SQL, написал пару строк почти флуда :mad:
     
  6. Ramm

    Ramm Писатель

    Регистр.:
    24 фев 2012
    Сообщения:
    2
    Симпатии:
    1
    f_from, f_to - поля таблицы table1

    Код:
    select b.* from
    (
    SELECT f_from, MAX(id) as 'max_id'
    FROM `table1`
    GROUP BY f_from
    ORDER BY 2 DESC
    ) as a
    INNER JOIN `table1` as b
    ON a.max_id = b.id
     
Статус темы:
Закрыта.