请教大家关于查询重复记录的问题,请大神进来,比较难,两表联合查询。
本帖最后由 yylovelei 于 2012-4-18 05:35 编辑a表与b表字段都是相同的,字段为:
险种,车牌,发动机号,车大架号
现在想实现的是:
只要a表的险种与b表的险种相同,并且a表的车牌,发动机号,车大架号与b表的车牌,发动机号,车大架号只要3个中的一个相同,则显示出来相同的记录。
a表创建及记录:
DROP TABLE IF EXISTS `a`;
CREATE TABLE `a` (
`xianzhong` varchar(30) DEFAULT NULL,
`chepai` varchar(20) DEFAULT NULL,
`fadongji` varchar(30) DEFAULT NULL,
`chejiahao` varchar(30) DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=gbk;
INSERT INTO `a` VALUES ('DAA','吉B3120挂','无','');
INSERT INTO `a` VALUES ('DZA','吉B3120挂','无','');
INSERT INTO `a` VALUES ('DAA','暂未上牌','ABCD','无');
INSERT INTO `a` VALUES ('DAA','吉B3146挂','无','');
INSERT INTO `a` VALUES ('DZA','吉B3146挂','无','');
b表创建及记录:
DROP TABLE IF EXISTS `b`;
CREATE TABLE `b` (
`xianzhong` varchar(30) DEFAULT NULL,
`chepai` varchar(20) DEFAULT NULL,
`fadongji` varchar(30) DEFAULT NULL,
`chejiahao` varchar(30) DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=gbk;
INSERT INTO `b` VALUES ('DAA','吉B3120挂','无','LH9B3G40090HHT174');
INSERT INTO `b` VALUES ('DZA','吉B3120挂','无','LH9B3G40090HHT174');
INSERT INTO `b` VALUES ('DAA','吉B12345','','1345');
INSERT INTO `b` VALUES ('DAA','吉B3146挂','无','LH9B3G40990HHT173');
INSERT INTO `b` VALUES ('DZA','吉B3146挂','无','LH9B3G40990HHT173');
a表及b表及想要的结果图片如下,请大家帮帮忙,实在想不到该怎么查询了,先谢谢大家了。
没人来吗? 刚才在百度有个高手给了我这句
select b.* from a left join b on a.xianzhong=b.xianzhong where ( (a.chepai=b.chepai) + (a.fadongji=b.fadongji) + (a.chejiahao=b.chejiahao) )>1
还是不对啊 没有解决 觉得你的需求没有说清楚啊,你上面的是两个相同的显示b的,而你要一个相同的,而且显示的是相同的部分,那么是显示A的还是B的。另外两个肯定是不同的,是不是是无的就不显示,显示存在的值? http://www.oschina.net/question/272636_49426 觉得你的需求没有说清楚啊,你上面的是两个相同的显示b的,而你要一个相同的,而且显示的是相同的部分,那么是显示A的还是B的。另外两个肯定是不同的,是不是是无的就不显示,显示存在的值? SELECT DISTINCT(a.xianzhong),a.chepai,a.fadongji,b.chejiahao FROM a RIGHT JOIN b ON a.chepai=b.chepai WHERE a.fadongji!=''
页:
[1]