2

我有两个 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           |
+---------------------------------------------+

我的问题是,我怎样才能得到它,以便结果只返回具有不同 Location.Name 值的第一条记录?所以最终的正确结果表如下所示:

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

非常感谢!

4

1 回答 1

4

只需使用group by::

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
于 2012-12-04T18:01:49.213 回答