仅返回排序后的MySql联接查询中的第一个不同值

仅返回排序后的MySql联接查询中的第一个不同值,mysql,distinct,Mysql,Distinct,我有两个MySql表,一个用于位置,一个用于图像。我需要获取在一组特定位置拍摄的最新图像的列表,这是一个逗号分隔的列表,但我只想返回最新图像的记录,到目前为止,我一直在努力获得正确的结果 因此,我: Locations: +---------------------------------------------+ | ID | Name | |----|-------------------------------------

我有两个MySql表,一个用于位置,一个用于图像。我需要获取在一组特定位置拍摄的最新图像的列表,这是一个逗号分隔的列表,但我只想返回最新图像的记录,到目前为止,我一直在努力获得正确的结果

因此,我:

Locations:
+---------------------------------------------+
| ID | Name                                   |
|----|----------------------------------------|
|  1 | Indiana                                |
|  2 | Ohio                                   |
|  3 | Illinois                               |
+---------------------------------------------+

Images:
+---------------------------------------------+
| ID | User  | Location  |  Date              |
|----|-------|-----------|--------------------|
|  1 | Ray   | 1         | 2012-06-22         |
|  2 | Robert| 3         | 2011-09-18         |
|  3 | Marie | 1         | 2012-10-01         |
|  4 | Frank | 2         | 2010-12-11         |
|  5 | Debra | 1         | 2008-02-02         |
+---------------------------------------------+
因此,现在我有以下几点:

SELECT Locations.Name, Images.Date, Images.User
FROM Locations INNER JOIN Images ON Locations.ID = Images.Location
WHERE Locations.ID IN ('1','3')
ORDER BY Images.Date DESC
返回:

+---------------------------------------------+
| Name        | Date        |  User           |
|-------------|-------------|-----------------|
| Indiana     | 2012-10-01  | Marie           |
| Indiana     | 2012-06-22  | Ray             |
| Illinois    | 2011-09-18  | Robert          |
| Indiana     | 2008-02-02  | Debra           |
+---------------------------------------------+
我的问题是,如何获得它,使结果只返回第一条具有不同位置的记录。Name值?因此,最终正确的结果表如下所示:

+---------------------------------------------+
| Name        | Date        |  User           |
|-------------|-------------|-----------------|
| Indiana     | 2012-10-01  | Marie           |
| Illinois    | 2011-09-18  | Robert          |
+---------------------------------------------+
非常感谢

只需使用group by::

只需使用GROUPBY::


解释得很好requirement@Sashi康德:谢谢!我确实努力工作以确保示例尽可能清晰。我已经更新了我的查询,请仔细解释requirement@Sashi康德:谢谢!我确实努力工作以确保示例尽可能清晰。已更新我的查询,请检查此项不会首先返回最新的图像记录。由于它在排序之前进行分组,结果只返回两条记录,但它们是两条随机记录,而不是最近的记录。太棒了!我确实在最后添加了一个orderbydatedesc,只是为了让最终的两条记录表也在Date列上排序,但这不是什么大问题。这正是我需要的答案。谢谢不可思议的这也正是我所需要的!谢谢这不会首先返回最新的图像记录。由于它在排序之前进行分组,结果只返回两条记录,但它们是两条随机记录,而不是最近的记录。太棒了!我确实在最后添加了一个orderbydatedesc,只是为了让最终的两条记录表也在Date列上排序,但这不是什么大问题。这正是我需要的答案。谢谢不可思议的这也正是我所需要的!谢谢
Select tempTable.Name, tempTable.Date, tempTable.User from
(
    SELECT Locations.Name, Images.Date, Images.User, Locations.ID as locationID
    FROM Locations 
    INNER JOIN Images ON Locations.ID = Images.Location
    WHERE Locations.ID IN ('1','3')

    ORDER BY Images.Date DESC

) as tempTable GROUP BY  tempTable.locationID