这样的大批量数据查询怎么实现
数据库mysql,版本6.0
CREATE TABLE `contacts` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`lists_id` int(11) DEFAULT '0' COMMENT '列表ID',
`name` varchar(255) DEFAULT '' COMMENT '姓名',
`mobile` varchar(50) DEFAULT '' COMMENT '手机',
`phone` varchar(50) DEFAULT '' COMMENT '电话号码',
PRIMARY KEY (`id`)
) ENGINE=MyISAM AUTO_INCREMENT=50167 DEFAULT CHARSET=utf8 COMMENT='联系人';
INSERT INTO `contacts` VALUES ('1', '1', '客户1', '13511111111', '80001111' );
INSERT INTO `contacts` VALUES ('2', '2', '客户2', '13511111111', '80022222' );
INSERT INTO `contacts` VALUES ('3', '1', '客户3', '13511111113', '80001113' );
INSERT INTO `contacts` VALUES ('4', '1', '客户4', '13511111114', '80001114' );
INSERT INTO `contacts` VALUES ('5', '2', '客户5', '13511111115', '80001113' );
............
要注意的是,表里同一个lists_id的数据会有几万条
1、现在要得到lists_id=1的数据,但如果其中的mobile值在lists_id=2的mobile中有相同的,则不能放入数据集中
即得到
id lists_id name mobile phone
3 1 客户3 13511111113 80011113
4 1 客户4 13511111114 80011114
2、再复杂点,同样得到lists_id=1的数据,但如果其中的mobile值在lists_id=2的mobile中有相同的,或者phone值在lists_id=2的phone中有相同的,不能放入数据集中,即得到
id lists_id name mobile phone
4 1 客户4 13511111114 80011114
3、还更复杂的是
CREATE TABLE `customers_group` (
`group_id` int(11) DEFAULT NULL COMMENT '组ID',
`customers_id` int(11) DEFAULT NULL COMMENT '客户ID,关联customers表id'
) ENGINE=MyISAM DEFAULT CHARSET=utf8 COMMENT='联系人组关系';
INSERT INTO `customers_group` VALUES ('1', '1');
INSERT INTO `customers_group` VALUES ('1', '2');
INSERT INTO `customers_group` VALUES ('2', '2');
CREATE TABLE `customers` (
`id` int(11) NOT NULL AUTO_INCREMENT COMMENT 'ID',
`name` varchar(50) DEFAULT NULL COMMENT '联系人姓名',
`company` varchar(100) DEFAULT NULL COMMENT '公司名',
`mobile` varchar(20) DEFAULT NULL COMMENT '手机号',
`phone` varchar(20) DEFAULT NULL COMMENT '电话',
PRIMARY KEY (`id`)
) ENGINE=MyISAM AUTO_INCREMENT=3 DEFAULT CHARSET=utf8 COMMENT='通讯录联系人';
INSERT INTO `customers` VALUES ('1', '张三', '公司1', '13511111114', '80001116');
INSERT INTO `customers` VALUES ('2', '立四', '公司2', '13511111117', '80001117' );
要注意的是,customers里属于同一个group的数据会有几万条
同样得到contacts表lists_id=1的数据,但除了做上述2的数据过滤外,还再考虑过滤customers中的数据。过滤掉customers_group中group_id为1关联customers的数据,过滤方法同。
过滤后,则一个数据都没有
id lists_id name mobile phone
谢谢