13.08.2020, 20:39 [+3 UTC]
в нашей команде: 4 695 чел. | участники онлайн: 2 (рекорд: 21)

:: РЕГИСТРАЦИЯ

задать вопрос

все разделы

правила

новости

участники

доска почёта

форум

блоги

поиск

статистика

наш журнал

наши встречи

наша галерея

отзывы о нас

поддержка

руководство

Версия системы:
7.89 (25.04.2020)
JS-v.1.45 | CSS-v.3.39

Общие новости:
13.04.2020, 00:02

Форум:
02.08.2020, 11:21

Последний вопрос:
13.08.2020, 18:01
Всего: 152776

Последний ответ:
13.08.2020, 20:35
Всего: 260355

Последняя рассылка:
13.08.2020, 01:15

Писем в очереди:
0

Мы в соцсетях:

Наша кнопка:

RFpro.ru - здесь вам помогут!

Отзывы о нас:
18.02.2010, 13:38 »
Тимофеев Дмитрий Валерьевич
Спасибо за развёрнутый и подробный ответ. Так как цены на Radeon HD58хх кусаются наверно стоит подождать выхода новых видеокарт Nvidia или присмотреться сейчас к более доступным Radeon HD5770 , тогда поменяю и блок питания. [вопрос № 176749, ответ № 259546]
12.04.2019, 14:26 »
dar777
Это самое лучшее решение! [вопрос № 195221, ответ № 277829]
Наши встречи:
ID: 852

РАЗДЕЛ • PHP / Perl / Python

Создание программ на языках PHP, Perl и Python.

[администратор рассылки: Коцюрбенко Алексей Владимирович (Старший модератор)]

Лучшие эксперты в этом разделе

SAW
Статус: Студент
Рейтинг: 156
Коцюрбенко Алексей Владимирович
Статус: Старший модератор
Рейтинг: 29
Хватов Сергей
Статус: Академик
Рейтинг: 2

Перейти к консультации №:
 

Консультация онлайн # 74061
Раздел: • PHP / Perl / Python
Автор вопроса: Defalex
Отправлена: 04.02.2007, 15:27
Поступило ответов: 1

Есть таблица в MySQL table:

id |id_1 |id_2 |id_3 |id_4
---------------------------------------
1 |2 |1 |txt |563654
2 |2 |2 |txt |684596
3 |2 |5 |txt |563655
4 |2 |6 |txt |684536
5 |2 |3 |txt |566654
6 |2 |4 |txt |604596

Мне нужно выбрать из таблицы 5 последних записей, но так, чтобы id_2 были все разные (id - auto_increment, id_4 - уникальное datetime).
Я посылаю такой запрос:
$query = "SELECT * FROM table GROUP BY id_2 ORDER by id DESC LIMIT 5";
Выбирает все правильно: строки 6,5,4,3,2, но когда добавляю новые записи:

7 |2 |7 |txt |566654
8 |2 |1 |txt |604596

то будут выбраны строки 7,6,5,4,3.

Я так полагаю, что группировка по id_2 группирует 8-ю запись с 1-й, и они не попадают с выбираемую 5-ку, т.к. id у 1-й строчки старее (меньше).

Так вот, как выбрать записи так, чтобы id_2 по-прежнему группировались, но выводилась бы запись из каждой группы с последним id, а не с первым?

То есть чтобы в последнем случае вывелись строки 8,7,6,5,4?

Состояние: Консультация закрыта

Ответ # 141863 от lupus campestris

Здравствуйте, Defalex!
На примере:
1) mysql> select * from last;
+------+------+------+------+--------+
| id | id_1 | id_2 | id_3 | id_4 |
+------+------+------+------+--------+
| 1 | 2 | 1 | txt | 563654 |
| 2 | 2 | 2 | txt | 684596 |
| 3 | 2 | 5 | txt | 563655 |
| 4 | 2 | 6 | txt | 684536 |
| 5 | 2 | 3 | txt | 566654 |
| 6 | 2 | 4 | txt | 604596 |
| 7 | 2 | 7 | txt | 566654 |
| 8 | 2 | 1 | txt | 604596 |
| 9 | 2 | 4 | txt | 546372 |
+------+------+------+------+--------+
9 rows in set (0.00 sec)
Это аналог Вашей таблицы.
2) Делаем запрос:
mysql> select * from last inner join (select distinct id_2 as a from last order by id desc limit 5) as something on last.id_2=something.a where id=(select max(id) from last where last.id_2=something.a) order by id desc;
+------+------+------+------+--------+------+
| id | id_1 | id_2 | id_3 | id_4 | a |
+------+------+------+------+--------+------+
| 9 | 2 | 4 | txt | 546372 | 4 |
| 7 | 2 | 7 | txt | 566654 | 7 |
| 5 | 2 | 3 | txt | 566654 | 3 |
| 4 | 2 | 6 | txt | 684536 | 6 |
| 3 | 2 | 5 | txt | 563655 | 5 |
+------+------+------+------+--------+------+
5 rows in set (0.00 sec)
Получаем то, что нужно. Правда, добавляется лишнее поле...
Удачи!


Консультировал: lupus campestris
Дата отправки: 07.02.2007, 11:54

Рейтинг ответа:

0

[подробно]

Сообщение
модераторам

Отправлять сообщения
модераторам могут
только участники портала.
ВОЙТИ НА ПОРТАЛ »
регистрация »

Возможность оставлять сообщения в мини-форумах консультаций доступна только после входа в систему.
Воспользуйтесь кнопкой входа вверху страницы, если Вы зарегистрированы или пройдите простую процедуру регистрации на Портале.

Rambler's Top100

главная страница | поддержка | задать вопрос

Время генерирования страницы: 0.13495 сек.

© 2001-2020, Портал RFPRO.RU, Россия
Калашников О.А.  |  Гладенюк А.Г.
Версия системы: 7.89 от 25.04.2020
Версия JS: 1.45 | Версия CSS: 3.39