0

2 つのクエリがあります。

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まで。理由がわかりません

4

1 に答える 1

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

したがって、異なる結果セットが得られる理由を説明できるかもしれません。

于 2012-12-05T11:22:58.540 に答える