DROP FUNCTION getTopId;
DELIMITER $$
CREATE FUNCTION getTopId(inputId INT) RETURNS INT 
BEGIN
  DECLARE result_id INT;
  DECLARE input_id INT;
  SET input_id = inputId ;
  REPEAT 
    SET result_id = @d;
    SELECT COUNT(*),b INTO @c, @d FROM test WHERE a = input_id;
    SET input_id = @d;
  UNTIL (@c = 0) 
  END REPEAT ;
  RETURN result_id;
END $$SELECT a,getTopId(a) FROM test