Então não é possível usar o distinct quando temos uma chave primária?
Então não é possível usar o distinct quando temos uma chave primária?
Oi Aline tudo bem?
Você consegue usar o distinct para tabelas com chave primária sim.
Imagine que eu tenha uma tabela das placas de carro do Brasil. Onde os campos sejam: placa (chave primária), nome_do_dono, cpf.
Se eu dou SELECT DISTINCT PLACA, NOME_DO_DONO, CPF FROM PLACAS. O resultado é igual a SELECT * FROM PLACAS pois todas as placas já são distintas.
Mas eu posso fazer SELECT DISTINCT NOME_DO_DONO, CPF FROM PLACAS. Eu vou mostrar no resultado o nome do dono do carro e seu cpf. Mas apenas uma linha por pessoa.
Ao contrário se eu fazer SELECT NOME_DO_DONO, CPF FROM PLACAS. Nesse caso repetiria a linha caso uma pessoa tivesse mais de um carro.
Espero ter ajudado!!!
O problema não é o id, mas a construção da consulta, veja os exemplos de uma consulta, conforme eu mudo a forma que faço a consulta o resultado muda, o distinct só funciona se todos os campos estiverem com o dados iguais, veja os exemplos abaixo:
create table teste (id int, nome varchar (50), idade int);
truncate table teste;
insert into teste (id, nome, idade) values(1,'Maria',10);
insert into teste (id, nome, idade) values(2,'Joao',10);
insert into teste (id, nome, idade) values(3,'Maria',11);
insert into teste (id, nome, idade) values(4,'Carla',10);
insert into teste (id, nome, idade) values(5,'Maria',10);
select distinct nome from teste;
Resultado:
Carla
Maria
Joao
select distinct id, nome, idade from teste;
Resultado:
1 Maria 10
3 Maria 11
2 Joao 10
4 Carla 10
5 Maria 10
select distinct nome, idade from teste
resultado:
Maria 10
Maria 11
Joao 10
Carla 10
Caso seja uma consulta usando GROUP BY você também pode ter problemas e ter que mudar a construção da consulta.