insert com where no mysql

949 views
Skip to first unread message

thiago silva

unread,
Nov 12, 2008, 12:27:28 PM11/12/08
to list...@googlegroups.com
como dou um insert em uma tabela somente o o registro que estou inserindo não existe na tabela?
tentei assim mas não funcinou:

insert into vg_di(nome, tabela) values("teste", "teste")
where nome NOT IN (select nome, tabela from vg_di
where nome = "teste" AND tabela = "teste")

--
"E se o meu povo, que se chama pelo meu nome, se humilhar, e orar, e buscar a minha face e se converter dos seus maus caminhos, então eu ouvirei dos céus, e perdoarei os seus pecados, e sararei a sua terra." 2° Cr 7:14

Juan Roldan

unread,
Nov 12, 2008, 12:31:31 PM11/12/08
to list...@googlegroups.com
Ate onde sei, voce nao vai conseguir fazer isto.

INSERT INTO (campos) SELECT *. .....

Seguindo a consulta de cima conseguira, porem o resultado da consulta
vai inserir de acordo com a ordem dos campos, e não é o que voce
quer..

Não conheco uma maneira de fazer isto somente utilizando uma query simples.

Voce poderia criar um indice unique para o campo nome e tabela.

Ou na aplicacao fazer um select antes. Ainda acho que o indice vai
resolver seu problema, e o erro q do duplicate entry voce trata para
nao mostrar.


2008/11/12 thiago silva <thiagos...@gmail.com>:
--


Grato,

Juan Roldan
+55 41 88424688

Fernando Pedro

unread,
Nov 12, 2008, 12:41:00 PM11/12/08
to list...@googlegroups.com
Faz o seguinte:
if not exists(select nome from vg_di where nome='teste' and tabela='teste')
then

  insert into vg_di(nome, tabela) values("teste", "teste")
else
  update vg_di (complete o código
end if

acho q resolve seu problema

2008/11/12 thiago silva <thiagos...@gmail.com>



--
att.
Fernando Pedro
Programador
Gtalk: fernan...@gmail.com
Msn: fernand...@hotmail.com
skype: fernandopedrors
SENAC-GO / FECOMERCIO-GO
(62)-8458-4108
http://fernandopedro.com
http://www.upalele.com

thiago silva

unread,
Nov 12, 2008, 12:46:01 PM11/12/08
to list...@googlegroups.com
a sintaxe esta errada

2008/11/12 Fernando Pedro <fernan...@gmail.com>

Renato de Freitas Freire

unread,
Nov 12, 2008, 12:46:57 PM11/12/08
to list...@googlegroups.com
Entao pesquise e corrija..
já pegou a essência da coisa...


--
Renato de Freitas Freire
ren...@morfer.org


2008/11/12 thiago silva <thiagos...@gmail.com>

thiago silva

unread,
Nov 12, 2008, 12:48:32 PM11/12/08
to list...@googlegroups.com
Obrigado Renato, mas não perguntei qual a sintaxe, apenas comentei que não funcionou, caso alguem use esse topico futuramente. De qualquer maneira despenso comentarios iguais aos seus. Muito obrigado.

2008/11/12 Renato de Freitas Freire <rena...@gmail.com>

Diogo Roldão

unread,
Nov 12, 2008, 1:06:58 PM11/12/08
to list...@googlegroups.com
se nao me falha a memoria, pra vc conseguir usar IF ELSE no SQL ele deve estar dentro de procedures, functions, triggers, não é não?
 
 
[ ]'s...
 
 

Stephan A. de Souza

unread,
Nov 12, 2008, 12:48:23 PM11/12/08
to list...@googlegroups.com
Voce atualizou os valores do INSERT INTO e UPDATE né? :)

2008/11/12 thiago silva <thiagos...@gmail.com>



--
Stephan Alan de Souza
msn: bla...@hotmail.com
skype: stephan.desouza
Administrador HxBr.net
Forum/TeamSpeak Admin ragnaBR.net

Tiago Gigli

unread,
Nov 12, 2008, 1:21:01 PM11/12/08
to list...@googlegroups.com
jah deu uma lida no manual do mysql?
INSERT ... ON DUPLICATE KEY UPDATE.
--------------------------------------------
Tiago Gigli
MyGSM: +55 (15) 8116-5168
Eml/MSN/GTalk: ti...@gigli.com.br
Twitter: tiagogigli
--------------------------------------------
http://perolasdocar.blogspot.com/
http://tiago.gigli.com.br

Renato de Freitas Freire

unread,
Nov 12, 2008, 1:22:32 PM11/12/08
to list...@googlegroups.com
Cara,
acho que um pouco de paciência para pesquisar não mata ninguém.

se você não sabia como fazer e nem por onde começar a pesquisar, o fernando já te deu a dica.
se você pesquisasse no google "mysql insert if" você iria encontrar o que queria.

pra não dizer que não contribui com o tópico, aí vai:

INSERT IGNORE INTO `TESTE`
SET `nome` = 'nome',
`teste` = 'teste';

é só adaptar....

Paulo Diovani

unread,
Nov 12, 2008, 2:06:03 PM11/12/08
to list...@googlegroups.com
INSERT INTO Foo SELECT 'bar', column1 FROM Foo WHERE column2 != 0;

Este é um exemplo de como fazer um INSERT com WHERE.
Se ainda tiver dúvidas, o manual do SQL deve te ajudar. ele é muito
bem organizado e fácil de entender.

2008/11/12 Renato de Freitas Freire <rena...@gmail.com>:
--
Paulo Diovani
pa...@diovani.com
+55 51 8146 5413
___________________
http://www.diovani.com

Fernando Almeida

unread,
Nov 12, 2008, 2:19:18 PM11/12/08
to list...@googlegroups.com
já tentou usar o unic ?
UNIQUE KEY `coluna` (`coluna`)

2008/11/12 Paulo Diovani <pa...@diovani.com>

Lucas Mezencio

unread,
Nov 12, 2008, 6:08:19 PM11/12/08
to list...@googlegroups.com
INSERT COM WHERE???
De onde vocês tiraram isso???

Isso num existe não gente...

2008/11/12 Fernando Almeida <nando...@gmail.com>



--
Lucas Mezêncio
www.lucasmezencio.com
31 9705-6636

Paulo Diovani

unread,
Nov 12, 2008, 6:12:16 PM11/12/08
to list...@googlegroups.com
No diretamente, lucas, mas jum INSERT [...] SELECT [...] dá o
resultado desejado.

2008/11/12 Lucas Mezencio <lucas.m...@gmail.com>:
Reply all
Reply to author
Forward
0 new messages