sql工作台在运行连接后添加行

e37o9pze  于 2021-06-23  发布在  Mysql
关注(0)|答案(1)|浏览(257)

大家好,我有一个简短的问题,我正在运行mysql工作台,在连接两个表之后,我得到10000行的结果。考虑到第一个数据集有6000行,第二个数据集有450行,这显然是错误的。我显然做错了什么,但我不知道这是什么,为什么会发生我选择了一些列从第一个数据集,并与第二个sv3和sv4列匹配
你能告诉我我做错了什么吗?
代码

select media.Timestamp, media.Campaign, media.Media, media.sv3, media.sv4 
from media
inner join media_1
on media.sv3=media_1.sv3 and on media.sv4=media_1.sv4
lfapxunr

lfapxunr1#

连接查询产生的结果比其源记录多,这不一定是一个明显错误的标志;但可能是某个错误的指示器(需要以这种方式进行的查询是存在的,但相对较少)。
问题的根源很可能是因为您加入的值在两个表中都不是唯一的。举个简单的例子:如果表x有两条字段a=5的记录,表y有三条字段a=5的记录,它们在字段a上连接起来;这些记录将产生六个结果。
这可能意味着源数据有问题,或者您可能只需要以不同的方式查询它。我注意到您只从 media 没有一个来自 media_1 ; 此查询可能会产生您期望的结果:

SELECT media.Timestamp, media.Campaign, media.Media, media.sv3, media.sv4 
FROM media
WHERE (sv3, sv4) IN (SELECT sv3, sv4 FROM media_1)

相关问题