Ir para conteúdo
Fórum Script Brasil
  • 0

(Resolvido) Comando NOT IN em MySQL!


borges02

Pergunta

Bom dia!

alguém sabe converter esse comando de sql server para mysql: "SELECT TOP 16 CODIGOREG,NOMEREG FROM REGIAO WHERE CODIGOREG NOT IN (SELECT TOP 0 CODIGOREG FROM REGIAO ORDER BY CODIGOREG) ORDER BY CODIGOREG" ?

Estou usando o mysql server 6.0...

Desde já, agradeço pela ajuda e atenção de todos...

Muito Obrigado...

Link para o comentário
Compartilhar em outros sites

10 respostass a esta questão

Posts Recomendados

  • 0
Bom dia!

alguém sabe converter esse comando de sql server para mysql: "SELECT TOP 16 CODIGOREG,NOMEREG FROM REGIAO WHERE CODIGOREG NOT IN (SELECT TOP 0 CODIGOREG FROM REGIAO ORDER BY CODIGOREG) ORDER BY CODIGOREG" ?

Estou usando o mysql server 6.0...

Desde já, agradeço pela ajuda e atenção de todos...

Muito Obrigado...

"SELECT CODIGOREG, NOMEREG FROM REGIAO WHERE CODIGOREG NOT IN (SELECT CODIGOREG FROM REGIAO ORDER BY CODIGOREG LIMIT 1) ORDER BY CODIGOREG LIMIT 16"

Link para o comentário
Compartilhar em outros sites

  • 0

beleza Denis?

Testei o comando que você postou, mas está dando o seguinte erro: This version of MySQL doesn't yet support 'LIMIT & IN/ALL/ANY/SOME subquery'....

Então testei da seguinte forma: "SELECT CODIGOREG, NOMEREG FROM REGIAO ORDER BY CODIGOREG LIMIT 16" e deu certo, mas usando o NOT IN da erro...

Por que será que está dando esse erro? Será que é problema na versão que estou usando? Estou usando a útlima versão 6.0 do MySQL....

Link para o comentário
Compartilhar em outros sites

  • 0

Renta assim:

"SELECT CODIGOREG, NOMEREG FROM REGIAO WHERE CODIGOREG NOT IN (SELECT DISTINCT CODIGOREG FROM REGIAO ORDER BY CODIGOREG) ORDER BY CODIGOREG LIMIT 16"

Link para o comentário
Compartilhar em outros sites

  • 0

Denis,

Tentei esse último exemplo que você postou e não deu erro, porém não aconteceu nada também, não puxou nenhum registro.

O que será que está pegando?

Esse comando sql peguei de um exemplo que achei na net para paginar os registros no DataGridView usando a propriedade VirtualMode. Esse DataGridView é um componente do visual studio windows forms (c#) para visualizar os registros de uma tabela no bd. O exemplo que peguei na net usa banco de dados sql server...

Quando o form. é executado, o DataGridView carregará os 16 primeiros registros caso o CODIGOREG não estiver no (select codigoreg from regiao order by codigoreg limit x)... Esse (x) vai sendo incrementado conforme o DataGridView vai sendo carregado.. Ele começa com 0 e depois 16 e vai incrementando até chegar nas ultimas 16 paginas a ser carregado no DataGridView... Esse mecanismo (VirtualMode) faz com que o DataGridView seja carregado 16 registros por pagina até ser carregado por total...

Link para o comentário
Compartilhar em outros sites

  • 0

Estou tentando executar o seguinte comando SQL: SELECT CODIGOREG, NOMEREG FROM REGIAO WHERE CODIGOREG NOT IN (SELECT CODIGOREG FROM REGIAO ORDER BY CODIGOREG LIMIT 1) ORDER BY CODIGOREG LIMIT 16...........

Mas quando executo esse comando dentro da ferramenta MySQL Query Browser aparece a seguinte mensagem de erro: 'This version of MySQL doesn't yet support 'LIMIT & IN/ALL/ANY/SOME subquery'

Alguém sabe me dizer o que pode estar acontecendo? Estou usando o mysql server 6.0....

Desde já, agradeço pela ajuda e atenção de todos...

Muito Obrigado...

Link para o comentário
Compartilhar em outros sites

  • 0

'borges02'

O MySQL está te informando

'This version of MySQL doesn't yet support 'LIMIT & IN/ALL/ANY/SOME subquery'
que ele não aceita a cláusula LIMIT no código abaixo).
(SELECT CODIGOREG FROM REGIAO ORDER BY CODIGOREG LIMIT 1)

Link para o comentário
Compartilhar em outros sites

  • 0

'borges02',

sabe me dizer se existe outra forma para realizar este comando em mysql?/quote]

Se no select abaixo,

SELECT CODIGOREG, NOMEREG FROM REGIAO WHERE CODIGOREG NOT IN (SELECT CODIGOREG FROM REGIAO ORDER BY CODIGOREG LIMIT 1) ORDER BY CODIGOREG LIMIT 16
CODIGOREG é sua chave primária e você está tentando pegar tudo o que for diferente dela, tal como em
WHERE CODIGOREG NOT IN (SELECT CODIGOREG FROM REGIAO ORDER BY CODIGOREG LIMIT 1)
então a solução pode ser assim:
SELECT CODIGOREG, NOMEREG FROM REGIAO WHERE CODIGOREG NOT IN (SELECT MIN(CODIGOREG) FROM REGIAO) ORDER BY CODIGOREG LIMIT 16

Link para o comentário
Compartilhar em outros sites

  • 0

beleza Denis?

O valor do LIMIT que está dentro do NOT IN vai sendo incrementado conforme vai sendo carregado o DataGridView. Ele começa com 0 depois vai incrementando 16, depois 32, depois 48 e assim por diante. Se eu colocar dentro do NOT IN (SELECT MIN(CODIGOREG) FROM REGIAO) ele só irá comparar com o primeiro registro, por isso no meu caso não da para usar essa sintaxe. Como eu estou usando a propriedade VirtualMode do DataGridView tenho que carregar o DataGridView aos poucos, no meu caso vai ser 16 registros por página, por isso uso o limit. Tem alguma outra idéia de como posso resolver esse problema?

Link para o comentário
Compartilhar em outros sites

Visitante
Este tópico está impedido de receber novos posts.


  • Estatísticas dos Fóruns

    • Tópicos
      152,3k
    • Posts
      652,4k
×
×
  • Criar Novo...