0

シナリオ例:

TABLE_A には ID という列が含まれており、重複する行も含まれています。ID を含む ID_TABLE という別のテーブルがあります。ID_TABLE に重複がないことを前提としています -

私が行った場合:

SELECT * FROM TABLE_A
INNER JOIN ID_TABLE ON ID_TABLE.ID = TABLE_A.ID

結果セットに重複があります。しかし、もしそうなら:

SELECT * FROM TABLE_A
WHERE TABLE_A.ID IN (SELECT ID_TABLE.ID FROM ID_TABLE)

結果セットに重複はありません。

JOIN句が重複を許可しないのに句が重複を許可する理由を誰かが知っINていますか? 私は彼らが同じことをしたと思っていました。

ありがとう

4

1 に答える 1

3

重複を許可しているわけではありません。2 つのテーブルを結合することにより、テーブル 1 とテーブル 2 から製品を作成しているため、TABLE_A に ID=1 の 2 つのレコードがあり、ID_Table に 1 つのレコードがある場合、結果の製品は 2 つのレコードになります。IN を使用しても、値が IN 句に複数回リストされていても、IN 句内の値に一致する一意のレコードのみを取得しているため、レコードの乗算は発生しません。

于 2012-09-12T17:49:22.257 に答える