ВЫБЕРИТЕ все новейшие записи - PullRequest
2 голосов
/ 09 марта 2011

У меня есть такая структура таблицы

  sn  |  person_id  |   image_name |

   1  |   1         |      abc1.jpb 
   2  |   1         |      aa11.jpg  
   3  |   11        |      dsv.jpg
   4  |   11        |      dssd.jpg
   5  |   11        |      sdf.jpg

Мне нужна отдельная новая строка person_id, как указано ниже

  2   |  1          |  aa11.jjpb
  5   |  11         |  sdf.jpg

ЭТО возможно?

Ответы [ 3 ]

6 голосов
/ 09 марта 2011
SELECT * FROM table GROUP BY person_id HAVING MAX(sn)

РЕДАКТИРОВАТЬ

SELECT f.*
FROM (
      SELECT person_id, MAX(sn) as maxval
      FROM  table GROUP BY person_id
     ) AS x INNER JOIN table AS f
ON f.person_id = x.person_id AND f.sn = x.maxval;

где таблица - это имя вашей таблицы.

5 голосов
/ 09 марта 2011
SELECT * FROM yourtable GROUP BY person_id ORDER BY sn DESC

По сути, вы хотите выбрать все записи из вашей таблицы. Затем он группируется по person_id (ограничение результата 1 идентификатором на человека) ... Упорядочение по убыванию SN означает, что он вернет самый последний (самый высокий) sn

Обновление: (и проверено)

SELECT * FROM (SELECT * FROM stackoverflow ORDER BY sn DESC) a GROUP BY person_id ORDER BY sn
0 голосов
/ 12 ноября 2015
SELECT * FROM table a WHERE a.`id` = ( SELECT MAX(`id`) FROM table b WHERE b.`person_id` = a.`person_id` );

То, что вы делаете внутри круглых скобок, - это выбор максимального значения id для строк, которые имеют этот отдельный person_id.Таким образом, для каждого уникального person_id вы получаете самую последнюю запись.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...