参考这写了一个,呵呵CREATE TABLE `article` ( `id` int(11) NOT NULL auto_increment, `title` varchar(200) NOT NULL default '', `link` varchar(200) NOT NULL default '', `created_at` datetime default NULL, PRIMARY KEY (`id`) ) ENGINE=InnoDB DEFAULT CHARSET=gb2312;INSERT INTO `article` VALUES (1,'营养学','http://lizhili.com','2009-04-26 09:05:32'); INSERT INTO `article` VALUES (2,'第二届大会1','http://lizhili.com','2009-06-26 17:34:22'); INSERT INTO `article` VALUES (3,'第二届大会2','http://lizhili.com','2009-07-26 17:34:22'); INSERT INTO `article` VALUES (4,'第二届大会','http://lizhili.com','2009-08-26 17:34:22'); INSERT INTO `article` VALUES (5,'猪营养协会','http://lizhili.com','2009-08-26 17:33:22'); INSERT INTO `article` VALUES (6,'诺维斯','http://lizhili.com','2009-08-26 17:13:22'); INSERT INTO `article` VALUES (7,'adsfsd','lizhili.com','2009-04-12 09:02:03'); INSERT INTO `article` VALUES (8,'adsaf','lizhili.com','2009-08-15 08:33:22');select left(created_at,7),title,link from article a where 3>(select count(*) from article where left(created_at,7)=left(a.created_at,7) and a.created_at<created_at) order by left(created_at,7);
建议贴出你的表结构,记录样本,以及算法来得到的结果。
表里有100条记录,分别为3、4、5、6月份录入的,我想把它取出来后用月份区分开成上面图片的那样子,现在想来想去只能是分开查询了N次数据库才能做到。
参考这写了一个,呵呵CREATE TABLE `article` (
`id` int(11) NOT NULL auto_increment,
`title` varchar(200) NOT NULL default '',
`link` varchar(200) NOT NULL default '',
`created_at` datetime default NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=gb2312;INSERT INTO `article` VALUES (1,'营养学','http://lizhili.com','2009-04-26 09:05:32');
INSERT INTO `article` VALUES (2,'第二届大会1','http://lizhili.com','2009-06-26 17:34:22');
INSERT INTO `article` VALUES (3,'第二届大会2','http://lizhili.com','2009-07-26 17:34:22');
INSERT INTO `article` VALUES (4,'第二届大会','http://lizhili.com','2009-08-26 17:34:22');
INSERT INTO `article` VALUES (5,'猪营养协会','http://lizhili.com','2009-08-26 17:33:22');
INSERT INTO `article` VALUES (6,'诺维斯','http://lizhili.com','2009-08-26 17:13:22');
INSERT INTO `article` VALUES (7,'adsfsd','lizhili.com','2009-04-12 09:02:03');
INSERT INTO `article` VALUES (8,'adsaf','lizhili.com','2009-08-15 08:33:22');select left(created_at,7),title,link from article a where 3>(select count(*) from article where left(created_at,7)=left(a.created_at,7) and a.created_at<created_at) order by left(created_at,7);