Выберите самую последнюю запись, которая использует общий идентификатор - PullRequest
0 голосов
/ 14 декабря 2011

У меня есть сущность, похожая на эту в доктрине 2.1:

<?php

    /**
     * @Entity
     * @Table(name="my_records")
     */
    class Record
    {
        /**
         * @Id
         * @Column(name="record_id",type="integer")
         */
        private $id;

        /**
         * @Column(name="common_id",type="string")
         */
        private $commonId;

        /**
         * @Column(name="record_content",type="text")
         */
        private $content;
    }

С такими данными в таблице:

record_id    common_id    record_content
---------    ---------    --------------
    1          abcd       abcd content
    2          efgh       efgh content
    3          ijkl       ijkl content
    4          abcd       abcd content updated
    5          ijkl       ijkl content updated

Мой вопрос к вам: как мне получить всепоследние значения?Предполагая, что чем выше значение record_id, тем более свежая запись.Данные, которые я ожидаю получить обратно:

record_id    common_id    record_content
---------    ---------    --------------
    2          efgh       efgh content
    4          abcd       abcd content updated
    5          ijkl       ijkl content updated

Ответы [ 2 ]

0 голосов
/ 14 декабря 2011

Один из возможных запросов может выглядеть следующим образом.

select record_id, common_id, record_content
  from my_records join
    (select common_id, max(record_id) as max_record 
      from my_records
      group by common_id) as max_records 
  on my_records.common_id = max_records.common_id
0 голосов
/ 14 декабря 2011

Попробуйте это -

SELECT t.* FROM mytable t
  JOIN (
    SELECT common_id, MAX(record_id) record_id FROM mytable GROUP BY common_id 
  ) t2
  ON t2.common_id = t.common_id AND t2.record_id = t.record_id
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...