字段为datetime类型,我想一个查询实现如下图般的格式,不知能否做到?现在的做法是用for了12次查询,好像有点不合理,不知各位有没有更好的方法?

解决方案 »

  1.   

    猜不出你的表结构。 算法是什么?select * from yourTable order id limit 12这样行不行? 如果不对问题在哪儿?
    建议贴出你的表结构,记录样本,以及算法来得到的结果。
      

  2.   

    是,三楼的朋友说的对,其实严格说不算是求SQL语法了,数据是能取到,就是不知道该如何给它分成一块块的显示出来,小块块是DIV结构.比喻说:
    表里有100条记录,分别为3、4、5、6月份录入的,我想把它取出来后用月份区分开成上面图片的那样子,现在想来想去只能是分开查询了N次数据库才能做到。
      

  3.   

    http://topic.csdn.net/u/20090423/13/1882d33e-ac49-4439-bc62-0af651837afc.html估计可以参考这个贴子,如果分组取出前N个记录。
      

  4.   


    参考这写了一个,呵呵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);