第一张表是两个设备mmac1和mmac2 第二张表是设备扫描后发送的记录
需求是求交集。一个手机被两个设备扫描到
他给的测试数据 结果应该是6个手机被扫描到。 但是上一个人做的宽表查出来是8个人
也就是他宽表做错了。他的做法是 第一张表mmac1与第二张表mmac左连接。 再用第一张表mmac2与第二张表mmac左连接。 最后两个左连接结果union all放在一起
你看下给的数据是不是有重复的。如果有重复的说明连接查询有问题。
最后通过union all连接起来也不能说明最终的结果是被两个设备扫描到,最后两个子查询应该做inner join吧
是不是应该加上个限制条件,mmac1 not in mmac2 ?或者不等于 ,主要不知道你这个字段啥意思
用设备表join扫描记录表(A),连接字段为设备表mmac1 = 记录表A.mmac,然后再次连接join扫描记录表(B),连接字段为设备表mmac2 = 记录表B.mmac,最后where A.mac = B.mac; 结果就是被两个设备扫描到的手机mac
例SELECT * FROM tb1 JOIN tb2 a ON a.mmac = tb1.mmac1
JOIN tb2 b ON b.mmac = tb1.mmac2
WHERE a.mac = b.mac