我有tblProducts和NioaProducts。 tblProducts看起来像这样: id | productId | skuCode | manCode | .....
NioaProducts看起来像这样: partNo | manuCode |价格| ....
现在,我正在执行这两个查询,我得到不同的计数,
SELECT COUNT(manCode) AS Expr1
FROM tblProducts p
WHERE (manCode IN
(SELECT manuCode
FROM NioaProducts))
这给了我o / p:10057
现在我正在使用内部联接
做同样的事情 SELECT COUNT(manCode) AS Expr1
FROM tblProducts p inner join NioaProducts n on p.manCode = n. manuCode
这给了我o / p:11481
我只是想知道哪个查询是正确的以及为什么两个结果都不同?
答案 0 :(得分:1)
Why the results are different ?
一种可能性是一对多的关系。 考虑以下两个表
tblProducts -
manCode Product
1 p1
2 p2
3 p3
NioaProducts -
manCode NioaProductName
1 np1
2 np2
2 np3
运行时
SELECT COUNT(manCode) AS Expr1
FROM tblProducts p
WHERE (manCode IN
(SELECT manuCode
FROM NioaProducts))
子查询返回(1,2,2)因此查询仅筛选1和2作为结果。所以它返回2。
但是当你运行连接查询时
SELECT COUNT(manCode) AS Expr1
FROM tblProducts p inner join NioaProducts n on p.manCode = n. manuCode
内连接的结果是
tblProducts.manCode NioaProducts.manCode
1 1
2 2
3 2
因此计数返回3