mysql - 我的 SQL 唯一值 - 意外结果

标签 mysql sql select group-by sql-order-by

我有一个表 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  

SQLFiddle demo

关于mysql - 我的 SQL 唯一值 - 意外结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20681551/

相关文章:

mysql - 查询显示年龄超过 18 岁且具有唯一城市的学生的学生表

mysql - 索引sql查询

php - MySQL 查询不考虑 GROUP BY

mysql - 如何从多个表中选择数据?

mysql - 如何计算行数并仍然显示所有行? mysql

mysql - 左加入所有结果

php - 如何在执行结束前逐步打印SQL查询结果?

mysql - 如何为一对多映射记录编写查询

mysql - 在Mysql中查找max distinct

python - 从 MySQL 数据库中选择数据并使用 Python 将其设为值