我有一个表 tblSchedule,下面是其中的值。
INSERT INTO tblSchedule (`scheduleID`, `eventID`, `price`, `eventDate`) VALUES
(1, 1, 150, '2013-04-20 00:00:00'),
(2, 1, 100, '2013-04-15 00:00:00'),
(3, 2, 80, '2013-04-18 00:00:00'),
(4, 3, 120, '2013-04-26 00:00:00'),
(5, 3, 140, '2013-04-22 00:00:00'),
(6, 2, 100, '2013-04-22 00:00:00');
我想获取按 eventDate ASC 排序的唯一事件。
我尝试了以下查询,但这给出了错误的价格值和正确的 eventDates。
SELECT MIN(eventDate) as minEventDate, eventId, price
FROM tblSchedule
GROUP BY eventID
ORDER BY minEventDate
Click Here to see code in action
谁能告诉我这里发生了什么以及正确查询的分割?
最佳答案
首先,您应该为每个 eventID
找到 MIN(EventDate)
,然后从原始表中找到包含这些 eventID
和 的行MIN(EventDate)
使用 JOIN
SELECT * FROM tblSchedule
JOIN
( SELECT MIN(eventDate) as minEventDate,
eventId
FROM tblSchedule
GROUP BY eventID
) as T on tblSchedule.eventID=t.EventId
AND
tblSchedule.eventDate=t.minEventDate
ORDER BY eventDate
关于mysql - 我的 SQL 唯一值 - 意外结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20681551/