title: Insert part of one table into another with original default attribute value
body: <p>I have two tables with the following schema,</p>
  
  <ul>
  <li>table1 (a int, b int, c int, d int default 123)</li>
  <li>table2 (a int, b int, c int, e int)</li>
  </ul>
  
  <p>I would like to update the <code>(a,b,c)</code> columns of <code>table2</code> into <code>table1</code>, but keep the default value of <code>d</code>.</p>
  
  <p>For example, with the following record</p>
  
  <pre><code>------------------------
  table1 | a | b | c | d |
  ------------------------
         | 1 | 2 | 3 | 4 |
  ------------------------
  </code></pre>
  
  <p>and</p>
  
  <pre><code>------------------------
  table2 | a | b | c | e |
  ------------------------
         | 5 | 6 | 7 | 8 |
  ------------------------
  </code></pre>
  
  <p>I would like an output of:</p>
  
  <pre><code>--------------------------
  table1 | a | b | c | d   |
  --------------------------
         | 1 | 2 | 3 | 4   |
         | 5 | 6 | 7 | 123 |
  --------------------------
  </code></pre>
  
  <p>Here is what I have tried:</p>
  
  <pre><code>INSERT INTO table1(a, b, c, d) 
  VALUES ((SELECT a, b, c FROM table2), DEFAULT)
  </code></pre>
  
  <p>This query has an invalid syntax, because it returns the table in the sub-query and uses it as a value.</p>
  
  <p>I have also tried to avoid this solution below, because it hides the fact, that the default value of <code>d</code> is used. I really want to explicitly make it default to make it clear.</p>
  
  <pre><code>INSERT INTO table1(a, b, c) 
      SELECT a, b, c  
      FROM table2
  </code></pre>
  
  <p>Is there a way to combine</p>
  
  <pre><code>INSERT .. VALUES(..)
  </code></pre>
  
  <p>with</p>
  
  <pre><code>INSERT.. SELECT.. FROM table
  </code></pre>
  
  <p>or just another way to achieve the same goal?</p>