SQL Select dentro de Update, erros..
29/09/2014
0
update promo set produto='produto1' where id= (select max(id) from promo where email='xxx@live.com')
quero dar um update na tabela promo no campo produto quero colocar produto1, onde id é a maior id tendo como referência aquele email ali!..
só que o SQL não permiti eu dar um update em algo que estou selecionando..
You can't specify target table 'promo' for update in FROM clause
tentei isto:
update promo set produto='produto1' where id= (SELECT id FROM (select max(id) from promo where email='xxx@live.com') as tmptbl)
ai vai sem erro, problema é que todos os registros são alterados..
alguém dá uma luz!
Alexandre
Post mais votado
29/09/2014
update a set produto='produto1' from promo as a where a.id= (select max(b.id) from promo as b where b.email='xxx@live.com')
Fabiano Carvalho
Mais Posts
29/09/2014
Ronaldo Lanhellas
update promo a set produto='produto1' where a.id = (select max(b.id) from promo b where b.email='xxx@live.com')
29/09/2014
Alexandre
update promo a set produto='produto1' where a.id = (select max(b.id) from promo b where b.email='alexandrecaus@live.com')
referido por Ronaldo, deu seguinte erro:
update a set produto='produto1' from promo as a where a.id= (select max(b.id) from promo as b where b.email='alexandrecaus@live.com')
referido ao Fabiano, deu seguinte erro:
obrigado pela colaboração!!
29/09/2014
Alexandre
rsrs
29/09/2014
Fabiano Carvalho
update promo set produto='produto1' where id= (select max(b.id) from promo as b where b.email='alexandrecaus@live.com')
29/09/2014
Ronaldo Lanhellas
UPDATE promo AS p1, (SELECT max(id) FROM promo WHERE email='alexandrecaus@live.com') AS p2 SET p1.produto = 'produto1' WHERE p1.id = p2.id;
30/09/2014
Alexandre
perfeito, primeiramente quero agradecer aos companheiros que me ajudaram nessa!
agora, abaixo deixo o código que utilizei, peguei o que William comentou, e troquei o DECLARE por SET(pelo que li, DECLARE é usado apenas em funções/procedimentos)..
SET @ID = (SELECT MAX(id) FROM promo WHERE email='alexandrecaus@live.com'); UPDATE promo SET produto='produto_1' WHERE id = @ID;
Vou marca-lo como melhor resposta devido a simplicidade do código, realmente foi efetivo para mim aprender desta forma.
Forte abraço aos camaradas!
Clique aqui para fazer login e interagir na Comunidade :)