Il n’est pas possible en SQL de définir l’auto-incrément d’une table en fonction d’une requête.

ALTER TABLE `table` AUTO_INCREMENT = 10; -- ✅ Valide
ALTER TABLE `table` AUTO_INCREMENT = (SELECT (MAX(`number`) + 1) FROM `other_table`); -- ❌ Invalide
 

Il faut donc passer par une procédure qui créé une requête à partir du résultat de la requête voulue puis l’execute.

Pour une nouvelle table

DELIMITER $
CREATE PROCEDURE `tbl_wth_ai`(IN `ai_to_start` INT)
BEGIN
 
	SET @s=CONCAT(
		'CREATE TABLE `table` (
			`number` int(11) auto_increment NOT NULL,
			CONSTRAINT table_pk PRIMARY KEY (`number`)
		)
		AUTO_INCREMENT = 
		', 
		`ai_to_start`
	);
 
	PREPARE stmt FROM @s;
	EXECUTE stmt;
	DEALLOCATE PREPARE stmt;
END $
DELIMITER ;
 
CALL tbl_wth_ai((SELECT (MAX(`number`) + 1) FROM `other_table`));
DROP PROCEDURE IF EXISTS tbl_wth_ai;

Pour une table existante

DELIMITER $
CREATE PROCEDURE `tbl_wth_ai`(IN `ai_to_start` INT)
BEGIN
 
	SET @s=CONCAT(
		'ALTER TABLE `table` AUTO_INCREMENT = ', 
		`ai_to_start`
	);
 
	PREPARE stmt FROM @s;
	EXECUTE stmt;
	DEALLOCATE PREPARE stmt;
END $
DELIMITER ;
 
CALL tbl_wth_ai((SELECT (MAX(`number`) + 1) FROM `other_table`));
DROP PROCEDURE IF EXISTS tbl_wth_ai;

Source : https://stackoverflow.com/questions/32550239/how-to-set-auto-increment-from-another-table