Visualizza il feed RSS

sspintux

Estrazione di un record casuale in sql server 2005 o superiore

Valuta questo inserimento
di pubblicato il 26-04-2011 alle 14:41 (3153 Visite)
Ultimamente mi è capitato di rispondere a tale domanda su un altro
forum e, siccome non ricordo sia mai stata posta su questo,
faccio un pò di divulgazione di notizie senza alcuna pretesa
di originalità (... anche perchè in fondo di articoli veramente
originali ne ho letti raramente).

N.B. tutte le query sono rigorosamente non testate.

Metodo #1
Sfrutta la function nativa NewId ed è applicabile se il
numero di righe non è troppo elevato
codice:
select top 1 * from tabella order by newid()
Metodo #2
Applicabile quando si dispone già di un numero di riga
estratto casualmente altrove.
Sfrutta il costrutto Row_Number()

codice:
--Simula il numero di riga casuale già calcolato altrove
declare @RandomRowNum int 
set @RandomRowNum=10

select campo1 ,campo2
from
(
   select   campo1 ,campo2
            , row_number() over(order by campo1) as RowNum 
  from tabella
) as Q
where RowNum = @RandomRowNum

aggiornamento da 26-04-2011 a 19:15 di sspintux

Categorie
Programmazione , Microsoft

Commenti