sql >> Databasteknik >  >> RDS >> Oracle

SQL-fråga för att få distinkta värden för alla kolumnvärden i en tabell

Du kan göra så här:

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

Användningen av union tar bort dubbletter av värden. Observera att detta förutsätter att kolumntyperna är kompatibla (som att alla är strängar).

EDIT:

Om kolumnen i en tabell bara måste ha en typ. (Okej, det kunde vara en variant, men det är förmodligen inte en förenkling.) Du kan casta allt till 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 gruppera kolumnerna efter datatyp och göra en separat körning för varje kolumn, eller en separat kolumn för varje datatyp. Det är osannolikt att du kommer att ha exakta matchningar mellan olika datatyper, så detta kan tillgodose ditt behov.




  1. PHP/MySQL - Hur man lägger till flera taggar

  2. Begränsning definierad UPPHÖJBAR INitialt OMEDELBART är fortfarande UPPHÖJD?

  3. Dela upp kommaseparerade värden i kolumner till flera rader i SQL Server

  4. Obs:Odefinierat index:bild - kan inte hitta felet