Sql 如何从每个配置文件中提取最后的注释?
我需要提取每个配置文件的最后评论,最后100个配置文件 如果type==1,则每个概要文件至少有一条注释Sql 如何从每个配置文件中提取最后的注释?,sql,greatest-n-per-group,Sql,Greatest N Per Group,我需要提取每个配置文件的最后评论,最后100个配置文件 如果type==1,则每个概要文件至少有一条注释 类型==1=>是公司 类型==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` v
- 类型==1=>是公司
- 类型==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家公司的第一条注释
请帮助查询尝试以下操作:
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
它应该可以做到这一点。id from profile,是注释中的FK,称为profileOk,我希望已修复。请试一试。