title: SQL-Union ALL and Except
body: <p>I am seeing a strange behavior when I do except and union statements in SQL. </p>
  
  <p>I have two tables </p>
  
  <pre><code>Select * from #old
  </code></pre>
  
  <p>Data looks like this        </p>
  
  <pre><code>oid1    oid2    co
     1      11     1
     2      22     1
     3      33     1
     4      55     1
  
  Select * from #new
  
  nid1    nid2    co
     1      11     3
     2      22     1
     3      33     1
     4      44     1
     4      55     1
  </code></pre>
  
  <p>This is my final query</p>
  
  <pre><code>Select * from #old
      except
      Select * from #new
      union all
      Select * from #new
      except
      Select * from #old
  </code></pre>
  
  <p>and gives these records</p>
  
  <pre><code>oid1    oid2    co
     1      11     3
     4      44     1
  </code></pre>
  
  <p>Question I have is.. Shouldn't there be another row in this from the first except clause:</p>
  
  <pre><code>Select * from #old
  except
  Select * from #new
  </code></pre>
  
  <p>which is </p>
  
  <pre><code>oid1    oid2    co    
     1      11     1
  </code></pre>
  
  <p>Shouldn't the final query have 3 rows instead of only 2, since not all columns are the same.</p>