0

次の構造の MySQL データベース テーブルがあります。

+----+---------+---------+---------------------+
| id | item_id |  name   |      modified       |
+----+---------+---------+---------------------+
|  1 |    1829 | Item 1  | 2013-10-20 20:42:34 |
|  2 |    1737 | Item 2  | 2013-10-25 12:33:01 |
|  3 |    1829 | Item 3  | 2013-10-22 18:47:22 |
|  4 |    1737 | Item 2b | 2013-10-29 21:12:29 |
|  6 |    1829 | Item 3b | NULL                |
+----+---------+---------+---------------------+

私がやりたいのは、単一のクエリですべてのアイテムを取得することですが、繰り返される場合は、より新しい (変更されたフィールドが新しい) または変更されたフィールドが NULL であるアイテムのみを取得します。

したがって、このテーブルから得られるものは次のとおりです。

+----+---------+---------+---------------------+
| id | item_id |  name   |      modified       |
+----+---------+---------+---------------------+
|  1 |    1829 | Item 1  | 2013-10-20 20:42:34 |
|  4 |    1737 | Item 2b | 2013-10-29 21:12:29 |
|  6 |    1829 | Item 3b | NULL                |
+----+---------+---------+---------------------+

次のような 2 番目の選択でそれを行うことができます。

SELECT db_items.item_id, db_items.name, db_items.modified  
FROM (SELECT item_id, name, modified 
    FROM db_items 
    ORDER BY modified DESC) db_items 
GROUP BY item_id

しかし、内部の SELECTS なしで可能かどうか知りたいです (これは単なる例であり、より複雑なクエリで使用するため)。

お時間とご回答ありがとうございます。

4

1 に答える 1

1

ちょうど試して

SELECT *
FROM db_items 
GROUP BY item_id
ORDER BY modified DESC
于 2013-11-05T10:48:32.167 に答える