MySQL - Fazendo Insert com Subquery
Muitas pessoas utilizam scripts PHP para ler dados de uma tabela do DB e jogar em outra porém isso pode ser feito diretamente através do MySQL de maneira muito fácil e muito mais rapidamente.
Vamos a um exemplo em que lemos os nomes femininos de uma tabela 'nome' e os referenciamos em uma tabela chamada 'empresarias'.
Tabela 'nome'
id | | nome | | genero |
---|---|---|
1 | Pedro | m |
2 | Souza | m |
3 | Santiago | m |
4 | Ana | f |
5 | Rosa | f |
6 | Tom | m |
7 | Tobias | m |
8 | Otavio | m |
9 | Hugo | m |
Tabela 'empresarias' com o campo 'id' AUTO INCREMENT
id | | id_nome |
---|
Se fizermos um Select simples da tabela 'nome':
SELECT
*
FROM
nome
WHERE
genero = 'f'
Teremos como resultado
id | | nome | | genero |
---|---|---|
4 | Ana | f |
5 | Rosa | f |
Ok, são estes dados que queremos referenciar na tabela 'empresarias'. Como proceder agora?
Podemos inserir diretamente os dados de uma tabela em outra utilizando o SELECT (uma subquerie) como origem. Vamos inserir todos os nomes femininos na tabela 'empresarias'
INSERT INTO
empresarias
(
id_nome
)
SELECT
id
FROM
nome
WHERE
genero = 'f'
Veja que em nosso novo select especificamos como único campo de retorno 'id' pois queremos apenas os ids dos nomes femininos. Quando fazemos INSERTS baseados em SELECTS devemos sempre tomar o cuidado de 'casar' a quantidade de campos e sua ordem.
Como 'empresarias' é uma tabela de referência não precisamos inserir todos os dados, inserimos apenas o id. Temos como resultado:
id | | id_nome |
---|---|
1 | 4 |
2 | 5 |
cujos ids coincidem com nosso select anterior.
Boa sorte!
Comentários
Postar um comentário