Usuário com melhor resposta
retorno uma linha se existir uma linha

Pergunta
-
Boa noite,
preciso fazer um select que me retorne somente uma linha.. ou seja.. não estou falando de top 1
preciso retornar um registro se ele existir somente uma vez na tabela.
ou seja.. se o registro A para o codigo B existe uma vez retorna.
é tipo se o count for igual a 1 retorna a linha.. mas nao sei se existe count() = 1...- Editado Hawk B quarta-feira, 5 de março de 2014 23:19
Respostas
-
Acho que pode ser assim:
select a.* from TabelaA a with (nolock) inner join (select count(*) as qtde, numero from Tabela_B with(nolock) group by numero having count(*) = 1) b on a.numero = b.numero
- Editado Advaldo Mesquita Moreira Junior quinta-feira, 6 de março de 2014 13:17 alteracao no sql
- Sugerido como Resposta David Silva quinta-feira, 6 de março de 2014 14:59
- Marcado como Resposta Giovani Cr terça-feira, 11 de março de 2014 12:25
-
Hawk B
Tente essa abordagem fazendo uso de uma CTE:
CREATE TABLE #TabelaA (id int, numero varchar(5), auxiliar varchar(10)); CREATE TABLE #TabelaB (id int, numero varchar(5), auxiliar varchar(10)); INSERT INTO #TabelaA VALUES (1,'12345','TESTE'),(2,'6789','TESTE2'),(3,'74128','TESTE3') INSERT INTO #Tabelab VALUES (1,'12345','BLA'),(2,'6789','TESTE3'),(3,'6789','TESTE4') ;WITH cte_tmp AS ( SELECT Numero, count(*) AS 'qtd' FROM #TabelaB GROUP BY Numero HAVING count(*) = 1 ) SELECT * FROM #TabelaA tbA JOIN cte_tmp CTE ON tbA.Numero = CTE.Numero DROP TABLE #TabelaA DROP TABLE #TabelaB
Espero que te ajude.
[]'s!
/* Logan Destefani Merazzi - http://www.merazzi.eti.br Se a resposta for útil, por favor, não esqueça de marcá-la como resposta. */
- Marcado como Resposta Giovani Cr terça-feira, 11 de março de 2014 12:25
-
o quer dizer esse nolock?
No nolock é para não "travar"/"bloquear" a tabela no momento da consulta.
http://blogs.msdn.com/b/fcatae/archive/2010/10/05/como-usar-select-with-nolock-para-melhorar-a-performance.aspx
[]´s
- Editado Advaldo Mesquita Moreira Junior quinta-feira, 6 de março de 2014 20:49
- Marcado como Resposta Giovani Cr terça-feira, 11 de março de 2014 12:25
-
Boa Tarde Hawk B,
Alguma novidade?
Att,
Giovani Cruzara – Microsoft Contingent Staff
Esse conteúdo é fornecido sem garantias de qualquer tipo, seja expressa ou implícita.
Msdn Community Support
Por favor, lembre-se de “Marcar como Resposta” as respostas que resolveram o seu problema. Essa é uma maneira comum de reconhecer aqueles que o ajudaram e fazer com que seja mais fácil para os outros visitantes encontrarem a resolução mais tarde.- Marcado como Resposta Giovani Cr terça-feira, 11 de março de 2014 12:25
Todas as Respostas
-
-
-
-
Tabela A Tabela B id numero auxiliar id numero auxiliar 1 123456 teste 546 123456 teste 2 456789 testeb 3 741258 testec preciso de um select na tabela A onde o campo numero exista somente uma vez e não mais que isso na tabela B
resultado do select:
id numero auxiliar 546 123456 teste -
Acho que pode ser assim:
select a.* from TabelaA a with (nolock) inner join (select count(*) as qtde, numero from Tabela_B with(nolock) group by numero having count(*) = 1) b on a.numero = b.numero
- Editado Advaldo Mesquita Moreira Junior quinta-feira, 6 de março de 2014 13:17 alteracao no sql
- Sugerido como Resposta David Silva quinta-feira, 6 de março de 2014 14:59
- Marcado como Resposta Giovani Cr terça-feira, 11 de março de 2014 12:25
-
Hawk B
Tente essa abordagem fazendo uso de uma CTE:
CREATE TABLE #TabelaA (id int, numero varchar(5), auxiliar varchar(10)); CREATE TABLE #TabelaB (id int, numero varchar(5), auxiliar varchar(10)); INSERT INTO #TabelaA VALUES (1,'12345','TESTE'),(2,'6789','TESTE2'),(3,'74128','TESTE3') INSERT INTO #Tabelab VALUES (1,'12345','BLA'),(2,'6789','TESTE3'),(3,'6789','TESTE4') ;WITH cte_tmp AS ( SELECT Numero, count(*) AS 'qtd' FROM #TabelaB GROUP BY Numero HAVING count(*) = 1 ) SELECT * FROM #TabelaA tbA JOIN cte_tmp CTE ON tbA.Numero = CTE.Numero DROP TABLE #TabelaA DROP TABLE #TabelaB
Espero que te ajude.
[]'s!
/* Logan Destefani Merazzi - http://www.merazzi.eti.br Se a resposta for útil, por favor, não esqueça de marcá-la como resposta. */
- Marcado como Resposta Giovani Cr terça-feira, 11 de março de 2014 12:25
-
-
o quer dizer esse nolock?
No nolock é para não "travar"/"bloquear" a tabela no momento da consulta.
http://blogs.msdn.com/b/fcatae/archive/2010/10/05/como-usar-select-with-nolock-para-melhorar-a-performance.aspx
[]´s
- Editado Advaldo Mesquita Moreira Junior quinta-feira, 6 de março de 2014 20:49
- Marcado como Resposta Giovani Cr terça-feira, 11 de março de 2014 12:25
-
-
Boa Tarde Hawk B,
Alguma novidade?
Att,
Giovani Cruzara – Microsoft Contingent Staff
Esse conteúdo é fornecido sem garantias de qualquer tipo, seja expressa ou implícita.
Msdn Community Support
Por favor, lembre-se de “Marcar como Resposta” as respostas que resolveram o seu problema. Essa é uma maneira comum de reconhecer aqueles que o ajudaram e fazer com que seja mais fácil para os outros visitantes encontrarem a resolução mais tarde.- Marcado como Resposta Giovani Cr terça-feira, 11 de março de 2014 12:25