2012-07-31 18 views
6

Ich habe eine Datenbank mit 69 Tabellen und ich möchte nur die ersten drei Datensätze jeder Tabelle auswählen.Wählen Sie die ersten 3 Zeilen jeder Tabelle in einer Datenbank

Ich kann es tun pro Tisch mit:

SELECT TOP 3 * 
    FROM table_schema.table_name 

Allerdings, wenn ich dies manuell zu tun, es war eine Menge Zeit in Anspruch nehmen würde.

Könnten Sie bitte einen Workaround vorschlagen?

Ich versuchte this solution aber ich kann es (ich weiß nicht, wie es für MSSQL ändern) erhalten zu arbeiten

EDIT Vielen Dank für Ihre Antworten. Ich war wahrscheinlich nicht klar genug: ich meinte, ich wollte jeden einzelnen Tisch parsen und nur die Top 3-Datensätze bekommen, bevor ich zum nächsten übergehe. Yaroslavs Code unten ist das, was ich brauchte

DECLARE @sql VARCHAR(MAX)=''; 
SELECT @[email protected]+'SELECT TOP 3 * FROM '+'['+SCHEMA_NAME(schema_id)+'].['+name+']'+';' 
    FROM sys.tables 
EXEC(@sql) 
+1

ersten drei Datensätze nach welcher Spalte ?, eine Tabelle keinen * natürliche Ordnung * oder etwas wie das – Lamak

Antwort

10

Hier haben Sie:

DECLARE @sql VARCHAR(MAX)=''; 
SELECT @[email protected]+'SELECT TOP 3 * FROM '+'['+SCHEMA_NAME(schema_id)+'].['+name+']'+';' 
    FROM sys.tables 
EXEC(@sql) 
+1

Danke, Kumpel! Genau das habe ich gebraucht! Sehr geschätzt! Поздрави! – Phil

+1

Gern geschehen, die @Aushin Lösung ist schnell und sauber, nur "aber" ist das MSforeachtable und MSforeachdb sind undokumentierte gespeicherte Prozeduren, daher unterstützt Microsoft sie nicht und kann sie jederzeit ändern – Yaroslav

+1

Nur eine Nachfolgefrage: was wäre der beste Weg, um alle Ergebnisse auf einmal zu exportieren? Es scheint, als ob ich nur "pro Tisch" exportieren kann? Danke – Phil

5
exec sp_MSforeachtable 'select top 3 * from ?' 
+0

Danke, aber das funktioniert nur, wenn Sie es manuell pro Tabelle tun möchten. Yaroslavs Kommentar unten adressiert, was ich brauchte. Danke für Ihre Hilfe. – Phil

+2

Was meinst du mit manuell? – Aushin

+0

@Phil - Was meinst du mit "funktioniert nur, wenn du es pro Tabelle manuell machen willst" ?, das hast du gefragt, richtig? – Lamak

Verwandte Themen