首页新闻找找看学习计划

mysql两张表 id相同 某些字段的数据不一致 如何找出这些数据

0
悬赏园豆:50 [已解决问题] 解决于 2019-12-05 09:16

字段学校名称 前三个不一致
字段区县名称 第四个不一致

第一个表名 banben
第二个表名 banben_1

问题补充:

能具体写出sql语句更好

雨轩恋i的主页 雨轩恋i | 初学一级 | 园豆:157
提问于:2019-12-04 16:40
< >
分享
最佳答案
0

不知道是不是这个意思??

先贴个sql:
select * from banben bb join banben_1 bb1 on bb.id = bb1.id
and (bb.school_name != bb1.school_name or bb.district != bb1.district);

执行结果(我是打印了俩表的所有字段,可按需获取):

banben表:

banben1表:

收获园豆:50
Ctrl` | 老鸟四级 |园豆:2250 | 2019-12-04 16:53

你这种写法确实可以查出来

不过,我是假设的学校名称和区县名称字段不一致,如果现在provice或者 dist 字段也有不一致的数据了,怎么办,就是这个字段名称不能定死 这个有没有办法 没有的话就算了

雨轩恋i | 园豆:157 (初学一级) | 2019-12-04 17:01

@雨轩恋i: 暂没能找到匹配N个字段的办法。
可以参考下这个(比上面判断字段简洁一些,不过效率问题就要你测试看看):

sql:
select * from (select * from banben bb union all
select * from banben_1 bb1) tab
GROUP BY id,school_name,provice,district
HAVING count(*) = 1

运行结果参考(result是把两个表的数据换行展示、若并行可使用concat等函数):

Ctrl` | 园豆:2250 (老鸟四级) | 2019-12-05 09:08

@Ctrl`: 感谢

雨轩恋i | 园豆:157 (初学一级) | 2019-12-05 09:13
其他回答(3)
0
SELECT * FROM banben WHERE NOT EXISTS (SELECT 1 FROM banben_1 WHERE banben.dist = banben_1.dist )
避凉闲庭 | 园豆:366 (菜鸟二级) | 2019-12-04 16:53
0

select *
from banben a
join banben_1 b on a.id = b.id
where a.学校名称 <> b.学校名称 or a.区县名称 <> b.区县名称;

leo.rd | 园豆:211 (菜鸟二级) | 2019-12-04 16:56

这种解法对单一问题可以解决,不过,我现在是假设学校名称和区县名称这俩字段下的数据有不一致,如果不知道到底哪些字段数据不一致,有解决办法吗?

支持(0) 反对(0) 雨轩恋i | 园豆:157 (初学一级) | 2019-12-04 17:13
0

语句不难 看你的意思 是筛选的列不固定 你可以自己写代码 百度下怎么查询sql表中所有的字段 去掉不需要筛选的字段之后 拼接语句 在进行查询

摩尼酸奶 | 园豆:122 (初学一级) | 2019-12-04 17:13

明白了,就是把所有的字段都拼接起来

支持(0) 反对(0) 雨轩恋i | 园豆:157 (初学一级) | 2019-12-04 17:14
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册