CLAUSULA IN COM VARIOS VALORES
29/01/2016
0
sou novo aqui no fórum e tenho uma dúvida,
preciso executar um select que traga a seguinte informação,
NOME, EMAIL, CÓD_MATRICULA de todos os alunos da tabela matricula, cujo cód já tenho em mãos.
Exemplo:
SELECT NOME, E-MAIL, CÓD_MATRICULA FROM TB_MATRICULA WHERE COD_MATRICULA = '20', '30', '51', '40'
eu preciso que os valores sejam exatamente iguais a 20, 30, 51 e 40,
da forma que eu fiz em cima o SQL SERVER da erro de sintaxe,
tentei usar a clausula IN porém essa clausula não traz os valores idênticos no qual eu preciso.
Alguem ai consegue me dar uma ajuda ?
Estou utilizando o SQL SERVER 2008
Qualquer ajuda fico agradecido.
Lucas Tiago
Post mais votado
29/01/2016
Se form VARCHAR() use:
SELECT NOME, E-MAIL, CÓD_MATRICULA FROM TB_MATRICULA WHERE COD_MATRICULA IN ('20', '30','51','40')
A resposta do João Viana esta correta é só acertar para o tipo de campo.
Jothaz
Mais Posts
29/01/2016
João Viana
a sintaxe correta é esta:
SELECT NOME, E-MAIL, CÓD_MATRICULA FROM TB_MATRICULA WHERE COD_MATRICULA IN (20, 30,51,40)
29/01/2016
Lucas Tiago
eu tentei dessa forma mas o SQL esta me trazendo um registro a mais na consulta,
eu preciso que sejam valores exatamente iguais,
aparentemente quando eu utilizo a clausula IN o sql esta pegando outro código que contenha os mesmos números que eu mencionei,
porém não é isso que eu preciso, eu quero que ele me traga os valores exatamente iguais assim como a clausula WHERE COD_MATRICULA = '10'
29/01/2016
João Viana
Nunca vi situações assim.
O campo cod_matricula é chave primária?
Se a clausula IN não está dando certo você pode tentar essas:
SELECT nome, e-mail, cod_matricula FROM tb_matricula WHERE ((cod_matricula = 20) OR (cod_matricula = 30) OR (cod_matricula = 51) OR (cod_matricula = 40)) SELECT nome, e-mail, cod_matricula FROM tb_matricula WHERE cod_matricula = 20 UNION SELECT nome, e-mail, cod_matricula FROM tb_matricula WHERE cod_matricula = 30 UNION SELECT nome, e-mail, cod_matricula FROM tb_matricula WHERE cod_matricula = 51 UNION SELECT nome, e-mail, cod_matricula FROM tb_matricula WHERE cod_matricula = 40
29/01/2016
Lucas Tiago
através da primeira forma que você mandou deu certo, porém o código fica muito extenso, pois quanto mais código de matricula eu tiver mais vezes eu tenho que ficar digitando o nome do campo e a clausula or
sabe me dizer se tem alguma forma mais simples de se fazer isso?, assim como o IN, só que pra mim o IN não serve pois eu estou declarando 4 itens e o sql esta me retornando um a mais.
29/01/2016
Jothaz
O IN deveria funcionar!
Post a estrutura da tabela.
declare @tab as table(COD_MATRICULA int) insert into @tab ( COD_MATRICULA) values (40) insert into @tab ( COD_MATRICULA) values (500) insert into @tab ( COD_MATRICULA) values (20) insert into @tab ( COD_MATRICULA) values (1) insert into @tab ( COD_MATRICULA) values (51) insert into @tab ( COD_MATRICULA) values (100) insert into @tab ( COD_MATRICULA) values (30) SELECT * FROM @tab WHERE COD_MATRICULA IN (20, 30, 51,40)
[img]http://arquivo.devmedia.com.br/forum/imagem/418027-20160129-125851.png[/img]
29/01/2016
Lucas Tiago
na verdade havia uma duplicidade de valores ou seja na consulta apareceu 2 vezes o mesmo aluno, pois ele possui somente um código, e acabei não me atentando a isso.
agora deu certo,
Obrigado a todos pela ajuda João e Jothaz,
vlw
Clique aqui para fazer login e interagir na Comunidade :)