Новости
Документация
Download
Webboard
Поиск
FAQ/ЧаВо
Обратная связь




MySQL.RU - Webboard



Вернуться
как подружить limit и subquery ? (Ratibor Redoran) 14/11/2009 - 02:36:50



From: Ratibor Redoran - 14/11/2009 - 02:36:50
Subject:как подружить limit и subquery ?
-----------------
Имеется таблица T с полями: id, date, price.
Нужно получить выборку, чтобы для каждого id были выбраны записи с последними двумя датами, т.е. если у нас имеется:

id data price
1 2009-11-10 11.8
1 2009-11-08 2.5
1 2009-10-22 116.4
2 2009-11-03 5.6
2 2009-11-01 11.0
2 2009-10-30 25.2
2 2009-10-29 1.1

То результат должен быть такой:

id data price
1 2009-11-10 11.8
1 2009-11-08 2.5
2 2009-11-03 5.6
2 2009-11-01 11.0

Казалось бы, самый простой вариант:

SELECT A.*
FROM T A
WHERE (A.id, A.data) IN
(SELECT B.id, B.data
FROM T B
WHERE A.id = B.id
ORDER BY B.data DESC
LIMIT 2)

должен решить задачу. Ан нет. Система пишет, что LIMIT нельзя применять в подзапросах (MySQL 5.0.18)

Следующий вариант:

SELECT A.*
FROM T A
JOIN (SELECT B.id, B.data FROM T B WHERE A.id = B.id LIMIT 2) B ON A.id = B.id AND A.Day = B.Day

тоже не прошёл: система не понимает, откуда взялся A.id внутри JOIN SELECT.

Вопрос простой: как быть? Думаю, что многие сталкивались с подобной задачей. Помогите её решить.



[Это сообщение - спам!]

Последние сообщения из форума

Уважаемые посетители форума MySQL.RU!
Убедительная просьба, прежде чем задавать свой вопрос в этом форуме, обратите внимание на разделы:
- ответы на наиболее часто задаваемые вопросы - FAQ
- раздел документация
- раздел поиск по сообщениям форума и документации
Также, старайтесь наиболее подробно указывать свою ситуацию (версию операционной системы, версию MySQL, версию программного обеспечения, по которому возникает вопрос, текст возникающих ошибок, и др.)
Помните, чем конкретнее Вы опишете ситуацию, тем больше шансов получить реальную помощь.
 Имя:
 E-mail:
 Тема:
 Текст:
Код подтверждения отправки: Code
36446



РЕКЛАМА НА САЙТЕ
  Создание сайтов | |