title: Why SELECT 0, ... instead of SELECT
body: <p>Lets say I have a SQLite database that contains a table:</p>
  
  <pre><code>sqlite&gt; create table person (id integer, firstname varchar, lastname varchar);
  </code></pre>
  
  <p>Now I want to get every entry which is in the table.</p>
  
  <pre><code>sqlite&gt; select t0.id, t0.firstname, t0.lastname from person t0;
  </code></pre>
  
  <p>This works fine and this it what I would use. However I have worked with a framework from Apple (Core Data) that generates SQL. This framework generates a slightly different SQL query:</p>
  
  <pre><code>sqlite&gt; select 0, t0.id, t0.firstname, t0.lastname from person t0;
  </code></pre>
  
  <p>Every SQL query generated by this framework begins with "select 0,". Why is that?</p>
  
  <p>I tried to use the explain command to see whats going on but this was inconclusive - at least to me.</p>
  
  <pre><code>sqlite&gt; explain select t0.id, t0.firstname, t0.lastname from person t0;
  addr        opcode      p1          p2          p3          p4          p5          comment   
  ----------  ----------  ----------  ----------  ----------  ----------  ----------  ----------
  0           Trace       0           0           0                       00          NULL      
  1           Goto        0           11          0                       00          NULL      
  2           OpenRead    0           2           0           3           00          NULL      
  3           Rewind      0           9           0                       00          NULL      
  4           Column      0           0           1                       00          NULL      
  5           Column      0           1           2                       00          NULL      
  6           Column      0           2           3                       00          NULL      
  7           ResultRow   1           3           0                       00          NULL      
  8           Next        0           4           0                       01          NULL      
  9           Close       0           0           0                       00          NULL      
  10          Halt        0           0           0                       00          NULL      
  11          Transactio  0           0           0                       00          NULL      
  12          VerifyCook  0           1           0                       00          NULL      
  13          TableLock   0           2           0           person      00          NULL      
  14          Goto        0           2           0                       00          NULL 
  </code></pre>
  
  <p>And the table for the second query looks like this:</p>
  
  <pre><code>sqlite&gt; explain select 0, t0.id, t0.firstname, t0.lastname from person t0;
  addr        opcode      p1          p2          p3          p4          p5          comment   
  ----------  ----------  ----------  ----------  ----------  ----------  ----------  ----------
  0           Trace       0           0           0                       00          NULL      
  1           Goto        0           12          0                       00          NULL      
  2           OpenRead    0           2           0           3           00          NULL      
  3           Rewind      0           10          0                       00          NULL      
  4           Integer     0           1           0                       00          NULL      
  5           Column      0           0           2                       00          NULL      
  6           Column      0           1           3                       00          NULL      
  7           Column      0           2           4                       00          NULL      
  8           ResultRow   1           4           0                       00          NULL      
  9           Next        0           4           0                       01          NULL      
  10          Close       0           0           0                       00          NULL      
  11          Halt        0           0           0                       00          NULL      
  12          Transactio  0           0           0                       00          NULL      
  13          VerifyCook  0           1           0                       00          NULL      
  14          TableLock   0           2           0           person      00          NULL      
  15          Goto        0           2           0                       00          NULL     
  </code></pre>