在sql中有不同的结果

时间:2012-12-05 11:11:17

标签: sql

我有两个问题:

1)

SELECT a.n
FROM account a, contract c
WHERE c.n = a.r$contract
AND c.n IN (
    SELECT account.n
    FROM account, contract
    WHERE contract.n = account.r$contract
    AND account.n = contract.n )
ORDER BY a.n

2)

SELECT account.n
FROM account, contract
WHERE contract.n = account.r$contract
AND account.n = contract.n

在1中有47行,但在2 - 15中。我无法理解为什么

1 个答案:

答案 0 :(得分:1)

不确定,我会试试......

如果查询2返回15行,那么查询1的内部选择也是如此,因为它看起来与我相同..

所以查询1就像

SELECT a.n
FROM account a, contract c
WHERE c.n = a.r$contract
AND c.n IN ( <any of the 15 values> )
ORDER BY a.n

这与

不同
SELECT a.n
FROM account a, contract c
WHERE c.n = a.r$contract
AND c.n = a.n              ( <-just one possible value)
ORDER BY a.n

这可以解释为什么你得到不同的结果集。