sql >> Database teknologi >  >> RDS >> Oracle

SQL-forespørgsel for at få distinkte værdier for alle kolonneværdier i en tabel

Du kan gøre det sådan her:

select col1 from table union
select col2 from table union
. . .
select coln from table;

Brugen af ​​union fjerner duplikerede værdier. Bemærk, at dette forudsætter, at kolonnetyperne er kompatible (såsom alle er strenge).

EDIT:

Hvis kolonnen i en tabel kun skal have én type. (Okay, det kunne være en variant, men det er nok ikke en forenkling.) Du kan caste alt til varchar2() :

select cast(col1 as varchar2(255)) from table union
select cast(col2 as varchar2(255)) from table union
. . .
select cast(coln as varchar2(255)) from table;

Alternativt kan du gruppere kolonnerne efter datatype og lave en separat kørsel for hver enkelt eller en separat kolonne for hver datatype. Det er usandsynligt, at du vil have nøjagtige matches på tværs af datatyper, så dette kan muligvis opfylde dit behov.




  1. Konverter decimaltid til timer og minutter

  2. Bedste ækvivalent til IsInteger i SQL Server

  3. Materialiseret visning vs. tabeller:Hvad er fordelene?

  4. MySQL - rangering efter count() og GROUP BY