title: Why does SQL JOIN allow duplicates but IN does not
body: <p>Example scenario:</p>
  
  <p>TABLE_A contains a column called ID and also contains duplicate rows. There is another table called ID_TABLE that contains IDs. Assuming no duplicates in ID_TABLE -</p>
  
  <p>If I do:</p>
  
  <pre><code>SELECT * FROM TABLE_A
  INNER JOIN ID_TABLE ON ID_TABLE.ID = TABLE_A.ID
  </code></pre>
  
  <p>There will be duplicates in the result set. However, if I do:</p>
  
  <pre><code>SELECT * FROM TABLE_A
  WHERE TABLE_A.ID IN (SELECT ID_TABLE.ID FROM ID_TABLE)
  </code></pre>
  
  <p>There will not be any duplicates in the result set.</p>
  
  <p>Does anyone know why the <code>JOIN</code> clause allows duplicates while the <code>IN</code> clause does not? I had thought they did the same thing.</p>
  
  <p>Thanks</p>