0

我需要为每个配置文件提取最后 100 个配置文件的最后一条评论

每个配置文件,如果 type==1,至少有 1 条评论

  • type==1 => 是公司
  • type==2 => 是人类

以下是相关表格和数据:

CREATE TABLE IF NOT EXISTS `comment` (
  `id` int(11) unsigned NOT NULL AUTO_INCREMENT,
  `profile` int(11) NOT NULL,
  `name` varchar(200) NOT NULL,
  `email` varchar(200) NOT NULL,
  `county` int(11) NOT NULL,
  `comment` text NOT NULL,
  `created` int(11) NOT NULL,
  `status` int(11) NOT NULL,
  `verified` int(11) NOT NULL,
  UNIQUE KEY `id` (`id`)
) ENGINE=InnoDB  DEFAULT CHARSET=latin1 AUTO_INCREMENT=5 ;

INSERT INTO `comment` (`id`, `profile`, `name`, `email`, `county`, `comment`, `created`, `status`, `verified`) VALUES
(1, 1, 'ANGAJAT 1', 'email 2', 1, 'comm 1', 1335423985, 0, 0),
(2, 3, 'ANGAJAT 2', 'email 4', 1, 'comm 2', 1335424011, 0, 0),
(3, 5, 'ANGAJAT 3', 'email 6', 1, 'comm 3', 1335424037, 0, 0),
(4, 5, 'ANGAJAT 3', 'email 6', 1, 'comm 4', 1335424039, 0, 0);

CREATE TABLE IF NOT EXISTS `profile` (
  `id` int(11) unsigned NOT NULL AUTO_INCREMENT,
  `type` int(11) NOT NULL COMMENT '1 = angajatori ; 2 - angajati',
  `name` varchar(200) NOT NULL,
  `county` int(11) NOT NULL,
  `email` varchar(200) NOT NULL,
  `created` int(11) NOT NULL,
  `comments` int(11) NOT NULL,
  `status` int(11) NOT NULL,
  `verified` int(11) NOT NULL,
  UNIQUE KEY `id` (`id`)
) ENGINE=InnoDB  DEFAULT CHARSET=latin1 AUTO_INCREMENT=7 ;

INSERT INTO `profile` (`id`, `type`, `name`, `county`, `email`, `created`, `comments`, `status`, `verified`) VALUES
(1, 1, 'ANGAJATOR 1', 1, 'email 1', 1335423985, 0, 0, 0),
(2, 2, 'ANGAJAT 1', 1, 'email 2', 1335423985, 0, 0, 0),
(3, 1, 'ANGAJATOR 2', 1, 'email 3', 1335424011, 0, 0, 0),
(4, 2, 'ANGAJAT 2', 1, 'email 4', 1335424011, 0, 0, 0),
(5, 1, 'ANGAJATOR 3', 1, 'email 5', 1335424037, 0, 0, 0),
(6, 2, 'ANGAJAT 3', 1, 'email 6', 1335424037, 0, 0, 0);\

我试过 :

SELECT * 
FROM COMMENT c
JOIN profile p ON p.id = c.profile
GROUP BY c.profile
ORDER BY c.created DESC , p.id ASC 
LIMIT 100

我得到了:

id  profile name    email   county  comment created status  verified    id  type    name    county  email   created comments    status  verified
3   5   ANGAJAT 3   email 6 1   comm 3  1335424037  0   0   5   1   ANGAJATOR 3 1   email 5 1335424037  0   0   0
2   3   ANGAJAT 2   email 4 1   comm 2  1335424011  0   0   3   1   ANGAJATOR 2 1   email 3 1335424011  0   0   0
1   1   ANGAJAT 1   email 2 1   comm 1  1335423985  0   0   1   1   ANGAJATOR 1 1   email 1 1335423985  0   0   0

查询返回最后每 100 家公司的第一条评论

请帮助查询

4

1 回答 1

1

试试这个:

SELECT c.* 
FROM COMMENT c
JOIN 
  (SELECT MAX(created_at) created_at, profile FROM COMMENT
   GROUP BY profile) p ON p.profile = c.profile AND p.created_at = c.created_at
ORDER BY c.created DESC , p.profile ASC 
LIMIT 100

它应该可以解决问题。

于 2012-04-26T08:58:48.533 回答