BEGIN
  DECLARE curdone, vid INT DEFAULT 0;
  DECLARE idcur CURSOR FOR 
    SELECT DISTINCT id FROM test;
  DECLARE CONTINUE HANDLER 
    FOR SQLSTATE '02000' SET curdone = 1;
  DROP TEMPORARY TABLE IF EXISTS earliers;
  CREATE TEMPORARY TABLE earliers( 
    id INT, entrydate DATE);
    
    /* 1#
  SET @sql = 
  'INSERT INTO earliers 
    SELECT id,entrydate 
    FROM test 
    WHERE id=? ORDER BY  entrydate LIMIT 2';
    
    */
  OPEN idcur;
  REPEAT
    FETCH idcur INTO vid;
   
    IF NOT curdone THEN
      BEGIN
      /* 1#
        SET @vid = vid;
        PREPARE stmt FROM @sql;
        EXECUTE stmt USING @vid;
        DROP PREPARE stmt;
        */
        
      /* # 2 or directly ;-) */
		INSERT INTO earliers 
		SELECT id,entrydate 
		FROM test 
		WHERE id= vid ORDER BY  entrydate LIMIT 2;
        
      END;
    END IF;
  UNTIL curdone END REPEAT;
  CLOSE idcur;
  SELECT * FROM earliers 
  ORDER BY id,entrydate;
  DROP TEMPORARY TABLE earliers;
END


CALL  listearliers();