2015-11-24 3 views
0

Я пытаюсь получить последнее сообщение из каждой категории поста, упорядоченного по дате, я попробовал это, но не дал последнего сообщения из таблицы, и когда я использую команду «до группы» by ', почта не упорядочена по дате с использованием mysql.Выберите последнее сообщение из каждой категории

SELECT post_id, category, author_id, title, article, time FROM (SELECT * FROM blog_post GROUP BY category LIMIT 0,5) AS timePost ORDER BY time DESC

SELECT post_id, category, author_id, title, article, time FROM (SELECT * FROM blog_post ORDER BY date LIMIT 0,5) AS timePost GROUP BY category

+1

Пожалуйста, вы можете сказать мне, SQL или MySQL – mohan111

+0

, какой тип базы данных, которую вы используете? oracle, mysql, sql-server, .... – Thomas

+0

mysql, я написал его в вопросе – cozmik05

ответ

0

В MS SQL, как ваш вопрос не ясно, как в моем предположении

SELECT post_id, category, author_id, title, article, time 
FROM blog_post t 
WHERE 
t.post_id=(SELECT TOP 1 post_id 
      FROM Table t2 
      WHERE 
      t.post_id=t2.post_id 
      ORDER BY time DESC) 
+0

am using mysql db – cozmik05

1

Вы можете сделать автообъединение.

SELECT T1.`post_id`, 
      T1.`category`, 
      T1.`author_id`, 
      T1.`title`, 
      T1.`article`, 
       T1.`time` 
    FROM 
      blog_post T1 
      INNER JOIN 
      (SELECT MAX(`time`) AS `time`,`category` FROM blog_post GROUP BY category) T2 
     ON T1.`category` = T2.`category` AND T1.`time` = T2.`time` 
    ORDER BY T1.`time` DESC 

Надеюсь, это поможет.

+0

Можете ли вы попробовать это? –

-1

Это, кажется, есть работа ... я не знаю, насколько эффективно это хотя

SELECT post_id, category, author_id, title, article, time FROM (SELECT * FROM blog_post ORDER BY time DESC) AS timePost GROUP BY category ORDER BY time DESC

+0

Будет отображаться все сообщения, но вам нужен только последний? –

Смежные вопросы