webForumDet fria alternativet

Unik hämtning

11 svar · 329 visningar · startad av LAMP

LAMPMedlem sedan mars 2002777 inlägg
#1

Bör man inte kunna utesluta dubletter med denna sql:en

SQL ="select distinct Email from mail order by Email"

fälttypen är varchar och jag får ut dubletter trots användandet av distinct.

LarsGMedlem sedan dec. 200012 464 inlägg
#2

Jodå, det skall fungera så. Ser din sql-sats ut exakt så som du har skrivit?

LAMPMedlem sedan mars 2002777 inlägg
#3

Jo, den är kopierad med Ctrl + c och inklistrad med Ctrl + v.

Mycket märkligt :(

@ndersMedlem sedan juni 200032 969 inlägg
#4

Om det inte råkar vara så att vissa e-postadresser har exempelvis mellanslag före eller efter sig i fältet, då kan det ju se ut som att samma adress kommer fler gånger.

mvh,

LarsGMedlem sedan dec. 200012 464 inlägg
#5

Avslutande blanka är inte signifikanta vid distinct.

Däremot så är inledande blanka signifikanta, men dessa borde vara lättare att se.

LAMPMedlem sedan mars 2002777 inlägg
#6

smart! men då borde jag få ut rätt med denna?

SQL ="select distinct trim(Email) from mail order by Email"
@ndersMedlem sedan juni 200032 969 inlägg
#7

Vad använder du för dbms? Med Access borde det där fungera, men i T-SQL (SQL Server) finns inte Trim, utan du får använda LTRIM() för att slänga bort inledande blanka.

Möjligen får du med Access ha Order by 1 istället, och i SQL-Server ge ett alias på fältet, som du sedan sorterar på.

Mvh,

LAMPMedlem sedan mars 2002777 inlägg
#8

Tack, LTrim() löste problemet. Är inte första fältet i sql:en nr 0 ?

SPiNMedlem sedan mars 20007 896 inlägg
#9

Jäpp, det är det.

@ndersMedlem sedan juni 200032 969 inlägg
#10

Nej, det är det inte, det är 1. Av någon anledning.
Det är dock ganska Access-specifikt.

Däremot, när du använder recordset på exempelvis en ASP-sida så är är första indexet 0.

Mvh,

LarsGMedlem sedan dec. 200012 464 inlägg
#11

Det är inte Access-specifikt att man kan använda

order by 1

Det stöds av de flesta dbms, även om det är borttaget ur SQL 99. Det som dock inte finns i Access är att man kan använda aliasnamn i order by.

select distinct email trim(email) as e from t order by e

Det finns i de flesta dbms och det är så det är tänkt enligt SQL 99

@ndersMedlem sedan juni 200032 969 inlägg
#12

En tacker för förklaringen! :D

Mvh,

125 ms totalt · 3 externa anrop · v20260731065814-full.30151723
0 ms — hämta forumlista (cache)
0 ms — hämta statistik (cache)
123 ms — hämta tråd, inlägg och bilagor (db)