Zufällig ausgewählte Datensätze zurückgeben

By Frank Kalis

Posted on Jul 13, 2004 von in SQL Server

Die Anforderung, zufällig ausgewählte Datensätze zurückzugeben, findet man recht häufig. Analyse einer Stichprobe ist eine wahre Spielwiese für Statistiker. In T-SQL kann dies recht einfach umgesetzt werden.

USE PUBS
SELECT TOP 10 
	au_fname
	, au_lname
FROM
	authors
ORDER BY 
	NEWID()

au_fname             au_lname                                 
-------------------- ---------------------------------------- 
Johnson              Hello World
Reginald             Blotchet-Halls
Meander              Smith
Albert               Ringer
Marjorie             Green
Dean                 Straight
Michael              O'Leary
Sylvia               Panteley
Michel               DeFrance
Anne                 Ringer

(10 row(s) affected)

--nächste Ausführung

au_fname             au_lname                                 
-------------------- ---------------------------------------- 
Akiko                Yokomoto
Meander              Smith
Burt                 Gringlesby
Johnson              Hello World
Dean                 Straight
Morningstar          Greene
Anne                 Ringer
Innes                del Castillo
Cheryl               Carson
Michel               DeFrance

(10 row(s) affected)

--noch einmal

au_fname             au_lname                                 
-------------------- ---------------------------------------- 
Dean                 Straight
Abraham              Bennet
Burt                 Gringlesby
Heather              McBadden
Anne                 Ringer
Marjorie             Green
Stearns              MacFeather
Sylvia               Panteley
Sheryl               Hunter
Albert               Ringer

(10 row(s) affected)

ist eine beliebte Möglichkeit dafür.

Alternativ kann man die Anzahl der zurückgegebenen Datensätze auch mit

SET ROWCOUNT 10

beschränken. Dies bietet sogar noch den Vorteil, daß eine Variable verwendet werden kann, ohne gleich dynamisches SQL einsetzen zu müssen, wie bei TOP @Variable notwendig wäre.

USE PUBS
DECLARE @MyCount INT
DECLARE @MyCount2 INT
SET @MyCount = 10
SET ROWCOUNT @MyCount
SELECT 
	au_lname, au_fname 
FROM 
	authors 
ORDER BY NEWID()
SET ROWCOUNT 0
SET @MyCount2 = 2
SET ROWCOUNT @MyCount2
SELECT 
	au_lname
	, au_fname 
FROM 
	authors
ORDER BY NEWID()
SET ROWCOUNT 0

au_lname                                 au_fname             
---------------------------------------- -------------------- 
Panteley                                 Sylvia
O'Leary                                  Michael
Gringlesby                               Burt
FRANK                                    Marjorie
Dull                                     Ann
Hunter                                   Sheryl
FRANK                                    Johnson
Stringer                                 Dirk
del Castillo                             Innes
Blotchet-Halls                           Reginald

au_lname                                 au_fname             
---------------------------------------- -------------------- 
Bennet                                   Abraham
Blotchet-Halls                           Reginald

Tags: Tags:
Dieser Eintrag wurde eingetragen von und ist abgelegt unter SQL Server. Tags: , ,

Noch kein Feedback


Formular wird geladen...