结构如下:
DROP TABLE IF EXISTS `wc`.`site`;
CREATE TABLE  `wc`.`site` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `site1` varchar(200) DEFAULT NULL,
  `site2` varchar(200) DEFAULT NULL,
  PRIMARY KEY (`id`)
) ENGINE=MyISAM AUTO_INCREMENT=12 DEFAULT CHARSET=gbk;INSERT INTO `site` (`id`,`site1`,`site2`) VALUES 
 (2,'1','1001'),
 (3,'1','1001'),
 (4,'1','1001'),
 (5,'1','1001'),
 (6,'2','1002'),
 (7,'2','1002'),
 (8,'2','1002'),
 (9,'3','1003'),
 (10,'3','1003'),
 (11,'3','1003');id site1 site2
2, '1', '1001'
3, '1', '1001'
4, '1', '1001'
5, '1', '1001'
6, '2', '1002'
7, '2', '1002'
8, '2', '1002'
9, '3', '1003'
10, '3', '1003'
11, '3', '1003'现在想筛选出两条不重复的值.
我初步想法是
SELECT * FROM wc.site m where m.id in(这里用PHP读出每条的头两条ID).但这样的效率简单是不敢想像..数据量一大.肯定慢如120老头老太..
还请各位达人赐予良方!

解决方案 »

  1.   

    SELECT * FROM `site` A WHERE 2>(SELECT COUNT(*) FROM `SITE` WHERE A.site1=site1 AND A.site2=site2 AND A.id<ID) ;
      

  2.   

    在site1,site2 上加联合索引或许能快点
      

  3.   

    方法有多种
    参考 http://topic.csdn.net/u/20091231/16/2f268740-391e-40f2-a15e-f243b2c925ab.html?4742
      

  4.   

    参考下贴中的多种方法http://topic.csdn.net/u/20091231/16/2f268740-391e-40f2-a15e-f243b2c925ab.html
    [征集]分组取最大N条记录方法征集,及散分....
      

  5.   

    site1,site2,ID 上加联合索引