Se você precisar fazer isso para muitas linhas, acredito que seja mais interessante criar um script em Python, Node ou PHP para fazer uma única consulta com todos os dados que você precisa da tabela A para inserir na tabela B (sem usar o mesmo id) iterando os dados com um loop e inserindo na tabela B. Mas eu faria um START TRANSACTION antes do laço e um COMMIT depois do laço se der tudo certo. Se der errado, faria um comando ROLLBACK. A maioria das bibliotecas para manipulação de banco de dados já devem ter estas funções.
Mas para fazer com um único registro em SQL, fiz um exemplo bem simples no SQL Fiddle.
http://sqlfiddle.com/#!9/4a9f5f/1
Acredito que seja algo deste tipo.
CREATE TABLE clientes (
id int NOT NULL AUTO_INCREMENT,
nome varchar(255) NOT NULL,
idade int NOT NULL,
PRIMARY KEY (id)
);
INSERT INTO clientes
(`id`, `nome`, `idade`)
VALUES
(1, 'Jhon', 38),
(2, 'Lucas', 25),
(3, 'Bruno', 40),
(4, 'João', 20)
;
CREATE TABLE clientes_antigos (
id int NOT NULL AUTO_INCREMENT,
nome varchar(255) NOT NULL,
idade int NOT NULL,
PRIMARY KEY (id)
);
INSERT INTO clientes_antigos
(`id`, `nome`, `idade`)
VALUES
(1, 'Ernandes', 51)
;
INSERT INTO clientes_antigos
(
nome, idade
)
SELECT nome, idade
FROM clientes
WHERE clientes.id = 3;
select * from clientes;
select * from clientes_antigos;