2017-02-07 2 views
1

Ich muss 10 zufällige Zeilen aus einer Tabelle auswählen, aber es muss in der WHERE-Klausel erfolgen, da die Abfrage mit einer anderen Anwendung ausgeführt wird, die nur diesen Teil ändern darf.SQL Server zufällige Zeilen auf Where-Klausel

Ich suchte nach vielen Lösungen (select top 10, RAND(), ORDER BY NEWID(), ...), aber keiner arbeitet in der Where-Klausel.

Gibt es eine Option, das zu tun? oder eine Art Workaround?

+0

Warum nicht einfach das Ergebnis von der App bekommen und es zufällig macht in Ihrem Programmlogik? –

+0

Da das Programm im Grunde die Tabelle mit allen Zeilen zeigt, und nur einige grundlegende Filter (Sortieren und Filtern nach Inhalt) und dann eine Option zum Hinzufügen einer where clausule erlaubt. – Piston

Antwort

1

Wenn Ihre Tabelle eine eindeutige Spalte können Sie so etwas wie:

SELECT * FROM TABLE WHERE PRIMARYCOLUMN IN (SELECT TOP(10) PRIMARYCOLUMN FROM TABLE ORDER BY NEWID())

3

Try this:

SELECT * 
FROM Test 
WHERE Id IN (SELECT TOP 10 Id FROM Test ORDER BY NewId()) 
Verwandte Themen