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