vnext - w3school sql server




Diferença entre Select Unique e Select Distinct (4)

Eu pensei que estes eram sinônimos, mas eu escrevi o seguinte no Microsoft SQL:

Select Unique col from 
     (select col from table1 union select col from table2) alias

E isso falhou. Mudando para

Select Distinct col from 
     (select col from table1 union select col from table2) alias

consertou. Alguém pode explicar?


Apenas no Oracle =>

SELECT DISTINCT e SELECT UNIQUE se comportam da mesma maneira. Enquanto DISTINCT é o padrão ANSI SQL, UNIQUE é uma instrução específica do Oracle.

Em outros bancos de dados (como o sql-server no seu caso) =>

SELECT UNIQUE é uma sintaxe inválida. UNIQUE é a palavra-chave para adicionar restrição exclusiva na coluna.

SELECT DISTINCT


  1. Unique era a sintaxe antiga, enquanto Distinct é a nova sintaxe, que agora é o sql padrão.
  2. Unique cria uma restrição de que todos os valores a serem inseridos devem ser diferentes dos outros. Um erro pode ser testemunhado se alguém tentar inserir um valor duplicado. Resultados distintos na remoção das linhas duplicadas durante a recuperação de dados.
  3. Exemplo: SELECT DISTINCT names FROM student;

    CREATE TABLE Pessoas (Id varchar NOT NULL UNIQUE , Nome varchar (20));


select unique não é uma sintaxe válida para o que você está tentando fazer

você quer usar ou selecionar distinto ou selecionar distinttrow

E, na verdade, você não precisa nem de distinto / distinto no que você está tentando fazer. Você pode eliminar duplicatas escolhendo os parâmetros de instrução de união apropriados.

a consulta abaixo por si só fornecerá valores distintos

select col from table1 
union 
select col from table2

se você quiser duplicatas você teria que fazer

select col from table1 
union all
select col from table2

SELECT UNIQUE é uma sintaxe antiga suportada pelo sabor do SQL da Oracle. É sinônimo de SELECT DISTINCT .

Use SELECT DISTINCT porque isso é SQL padrão e SELECT UNIQUE não é padrão, e em marcas de banco de dados diferentes do Oracle, SELECT UNIQUE pode não ser reconhecido.





sql-server