SQL distinto para 2 campos em um banco de dados


84

Você pode obter a combinação distinta de 2 campos diferentes em uma tabela de banco de dados? em caso afirmativo, você pode fornecer o exemplo SQL.

Respostas:


128

Que tal simplesmente:

select distinct c1, c2 from t

ou

select c1, c2, count(*)
from t
group by c1, c2

Dependendo dos dados, agrupar por é mais lento que distinto
noizer

5
Para aqueles que estão vendo Operand should contain 1 column(s)erros, o problema é que provavelmente você está fazendo select distinct(c1, c2) from te não tem permissão para colchetes aqui. Foi assim que cheguei aqui.
BookOfGreg

16

Se você quiser valores distintos de apenas dois campos, além de retornar outros campos com eles, os outros campos devem ter algum tipo de agregação (soma, mínimo, máximo, etc.), e as duas colunas que você deseja distinto devem aparecer em a cláusula group by. Caso contrário, é como diz Decker.


7

Você pode obter resultados distintos por duas colunas usadas abaixo do SQL:

SELECT COUNT(*) FROM (SELECT DISTINCT c1, c2 FROM [TableEntity]) TE

5

Se você ainda deseja agrupar apenas por uma coluna (como eu queria), você pode aninhar a consulta:

select c1, count(*) from (select distinct c1, c2 from t) group by c1

3

Compartilhe meu pensamento estúpido:

Talvez eu possa selecionar distinto apenas em c1, mas não em c2, então a sintaxe pode ser select ([distinct] col)+onde distinctestá um qualificador para cada coluna.

Mas depois de pensar, acho que distinto em apenas uma coluna é um absurdo . Considere a seguinte relação:

   | A | B
__________
  1| 1 | 2
  2| 1 | 1

Se nós select (distinct A), B, então o que é o bom Bpara A = 1?

Portanto, distincté um qualificador para a statement.

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.