不知道是不是这个意思??
先贴个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表:
你这种写法确实可以查出来
不过,我是假设的学校名称和区县名称字段不一致,如果现在provice或者 dist 字段也有不一致的数据了,怎么办,就是这个字段名称不能定死 这个有没有办法 没有的话就算了
@雨轩恋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`: 感谢
SELECT * FROM banben WHERE NOT EXISTS (SELECT 1 FROM banben_1 WHERE banben.dist = banben_1.dist )
select *
from banben a
join banben_1 b on a.id = b.id
where a.学校名称 <> b.学校名称 or a.区县名称 <> b.区县名称;
这种解法对单一问题可以解决,不过,我现在是假设学校名称和区县名称这俩字段下的数据有不一致,如果不知道到底哪些字段数据不一致,有解决办法吗?
语句不难 看你的意思 是筛选的列不固定 你可以自己写代码 百度下怎么查询sql表中所有的字段 去掉不需要筛选的字段之后 拼接语句 在进行查询
明白了,就是把所有的字段都拼接起来