MySQL - Fazendo Update com Subquery
Updates às vezes são bem chatos, principalmente quando devemos atualizar uma determinada tabela baseado em outra. Mas nem tudo está perdido!
Podemos utilizar as sempre úteis Subqueries ou Subselects para fazer este tipo de atualização.
Vamos definir as nossas tabelas base:
Tabela 'site'
Tabela 'tag'
Vamos atualizar na tabela 'site' os campos 'acessos' baseado na tabela 'tag'
Primeiro vamos selecionar todas as tags cujo 'nome' seja igual a 'Espaço'
SELECT
id_site
FROM
tag
WHERE
nome = 'Espaço'
Este resultado será utilizado em nosso Update. Para concluir a query inserimos este select como um subselect. Vamos atualizar o campo 'acessos' na tabela 'site' com o valor 101.
UPDATE
site
SET
acessos = 101
WHERE
id IN (
SELECT
id_site
FROM
tag
WHERE
nome = 'Espaço'
)
Como resultado temos a tabela 'site' atualizada da seguinte forma:
É isto.
Podemos utilizar as sempre úteis Subqueries ou Subselects para fazer este tipo de atualização.
Vamos definir as nossas tabelas base:
Tabela 'site'
id | nome | url | tipo | acessos |
---|---|---|---|---|
1 | Wikipedia Home | http://www.wikipedia.org/ | home | 0 |
2 | Wikipedia NASA | http://en.wikipedia.org/wiki/NASA | article | 0 |
3 | Wikipedia Planetas | http://pt.wikipedia.org/wiki/Planeta | article | 0 |
Tabela 'tag'
id | id_site | nome |
---|---|---|
1 | 2 | Agência |
2 | 2 | Estados Unidos |
3 | 2 | Pesquisa |
4 | 3 | Espaço |
5 | 1 | Wiki |
6 | 3 | Espaço |
7 | 1 | Wiki |
8 | 2 | Espaço |
Vamos atualizar na tabela 'site' os campos 'acessos' baseado na tabela 'tag'
Primeiro vamos selecionar todas as tags cujo 'nome' seja igual a 'Espaço'
SELECT
id_site
FROM
tag
WHERE
nome = 'Espaço'
id_site |
---|
3 |
3 |
2 |
Este resultado será utilizado em nosso Update. Para concluir a query inserimos este select como um subselect. Vamos atualizar o campo 'acessos' na tabela 'site' com o valor 101.
UPDATE
site
SET
acessos = 101
WHERE
id IN (
SELECT
id_site
FROM
tag
WHERE
nome = 'Espaço'
)
Como resultado temos a tabela 'site' atualizada da seguinte forma:
id | nome | url | tipo | acessos |
---|---|---|---|---|
1 | Wikipedia Home | http://www.wikipedia.org/ | home | 0 |
2 | Wikipedia NASA | http://en.wikipedia.org/wiki/NASA | article | 101 |
3 | Wikipedia Planetas | http://pt.wikipedia.org/wiki/Planeta | article | 101 |
É isto.
Comentários
Postar um comentário