Mysql中查询A表m字段与B表n字段进行匹配不同 5

A表m字段1,2,3,4B表m字段2,3,4,5输出A表中与与B表不同的值,结果为输出1,这个用语句怎么写?... A表m字段1,2,3,4
B表m字段2,3,4,5
输出A表中与与B表不同的值,结果为输出1,这个用语句怎么写?
展开
 我来答
匿名用户
2019-01-18
展开全部

你的写法是没有问题的,不过你from后面 直接查询了四张表,而四张表没有任何关联关系(左关联,内关联..),这个查出来的数据是四张表的笛卡尔积的数据量,一张表有100条数据的话,那么你查询的结果是 100*100*100*100 这样的数据量。

所以,你看看这四张表存不存在关联关系,或者where条件限定到尽量少的数据。

希望能够帮到你~

夜神梦无眠
2019-01-17 · TA获得超过3357个赞
知道小有建树答主
回答量:968
采纳率:63%
帮助的人:432万
展开全部

你指的是什么意思?

你要举个列子,别人才明白
比如A表   
id  / m
1      2
2      4 
3      5
-----------
B表
id  / n
1     2
2     3
3     5

你要的结果是返回什么?
追问
就像你这个AB表,m和n字段做比对,返回结果为m中n没有的,结果为4
追答
SELECT * FROM `tt_table1` as a LEFT JOIN tt_table2 as b on a.m = b.n group by a.m ;
这不就得了?
然后后台 foreach 循环遍历 获得n为空的结果 , 这是性能最佳的方法,不然数据多就跟楼上那位一样一只卡半天
请教别人的时候要表达自己诚意

1不要截图,输入文字, 2举例说明,3越详细越好, 别人才明白你的诚意
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
穷游学生
2019-01-17
知道答主
回答量:61
采纳率:16%
帮助的人:7万
展开全部
select A.m from A where A.m not in (select m from B);
输出结果为1,
追问
我的代码有点长复制不进来,但是我的规范是你这样的格式,但感觉在无限循环一样,查询了半个多小时还在跑。我描述里上传了照片麻烦您帮看下是不是哪里有问题
追答
时间长,不一定是代码逻辑不对,没有报错,只是时间长,首先看一下数据量有多少,在估算一下时间,这个逻辑就好比是去遍历,拿a表的数据去遍历b表的数据。如果两表的数据量都大的话,时间应该会很长,且你还使用了insert,你可以拿出来单步的sql,或者看一下执行计划,看一下是哪一步比较耗时,单拿出来测试。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式