0

我正在使用以下查询将两个表连接在一起:

SELECT SDA.smachIPAddress,
DPP.ScanName,
DPP.pspplMSSeverity,
DPP.PatchMissing,
DPP.ScanDate
FROM patchtest_withsev DPP
INNER JOIN patchtest_withip SDA
ON DPP.ScanName =SDA.ScanName

并接收2351行数据

当我在 patchtest_withsev 表中查询所有记录时,它只返回 99,而 patchtest_withip 表只返回 99。

谁能明白为什么这个查询会产生如此大的不匹配?

4

4 回答 4

3

似乎两个表都有几行具有相同的值ScanName

例如:

table1:
f1 | f2
 1 | a
 1 | b
 2 | c
 2 | c

table2:
f1 | f2
 1 | a
 1 | b
 2 | c

table1 INNER JOIN table2 ON table1.f1 = table2.f1 给出:

table1.f1 | table1.f2 | table2.f1 | table2.f2
        1 |         a |         1 |         a
        1 |         a |         1 |         b
        1 |         b |         1 |         a
        1 |         b |         1 |         b
        2 |         c |         2 |         c
        2 |         c |         2 |         c

为避免结果中的行完全重复,请尝试使用DISTINCT.

于 2012-06-07T20:11:52.970 回答
0

If there are 99 entries in each table, assuming there were no unique values for scanName, you could potentially have 99x99=9801 entries in your results.

If you are getting true duplicates, try SELECT DISTINCT.

于 2012-06-07T20:16:35.777 回答
0

如果有多个记录patchtest_withip与您加入的条件匹配,patchtest_withsev您可能会得到这样的结果。根据您得到的结果,我会说其中有 23-24 条记录与中的每条记录patchtest_withip相同ScanNamepatchtest_withsev

于 2012-06-07T20:14:33.267 回答
0

任一表中的 ScanName 是否有重复值?如果是这样,那么 SQL 将为每个匹配返回一行,这会很快增加行数。(例如,如果第一个表中有 3 行具有给定值,而第二个表中有 6 行具有该值,则 SQL 将返回 18 行)。

于 2012-06-07T20:12:14.690 回答