MariaDB社区

标题: 请教大家关于查询重复记录的问题,请大神进来,比较难,两表联合查询。 [打印本页]

作者: yylovelei    时间: 2012-4-18 05:33
标题: 请教大家关于查询重复记录的问题,请大神进来,比较难,两表联合查询。
本帖最后由 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表及想要的结果图片如下,请大家帮帮忙,实在想不到该怎么查询了,先谢谢大家了。

a.jpg (16.27 KB, 下载次数: 54)

a表

a表

b.jpg (21.66 KB, 下载次数: 56)

b表

b表

jieguo.jpg (22.75 KB, 下载次数: 56)

查询结果

查询结果

作者: yylovelei    时间: 2012-4-18 10:12
没人来吗?
作者: yylovelei    时间: 2012-4-18 12:26
刚才在百度有个高手给了我这句

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

作者: yylovelei    时间: 2012-4-19 16:55
还是不对啊 没有解决
作者: coky    时间: 2012-4-20 11:20
觉得你的需求没有说清楚啊,你上面的是两个相同的显示b的,而你要一个相同的,而且显示的是相同的部分,那么是显示A的还是B的。另外两个肯定是不同的,是不是是无的就不显示,显示存在的值?
作者: yylovelei    时间: 2012-5-3 23:10
http://www.oschina.net/question/272636_49426
作者: lovekiko520    时间: 2012-5-4 03:51
觉得你的需求没有说清楚啊,你上面的是两个相同的显示b的,而你要一个相同的,而且显示的是相同的部分,那么是显示A的还是B的。另外两个肯定是不同的,是不是是无的就不显示,显示存在的值?
作者: ゞ年華之外ゞ    时间: 2013-6-14 10:30
SELECT DISTINCT(a.xianzhong),a.chepai,a.fadongji,b.chejiahao FROM a RIGHT JOIN b ON a.chepai=b.chepai WHERE a.fadongji!=''




欢迎光临 MariaDB社区 (http://123.56.88.72/) Powered by Discuz! X3.2