2

「場所」用と「画像」用の 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 に答える