it-swarm.com.de

SQL Server: Wählen Sie Top 0?

Dies ist uns gerade in einem alten, in der Produktion gelagerten Prozess begegnet (hier ist noch viel mehr los, aber das ist in einem Teil seiner Logik). Warum sollte jemand jemals die obersten 0 Zeilen aus einer Tabelle auswählen? Ist das eine Art SQL-Hack oder Trick, mit dem ich nicht vertraut bin?

29
Dave Ziegler

Spalten in UNION ALL benennen

Lesen Sie auch die Antwort von Alex K.. Er hat viele Gründe, die ich auch benutzt habe. Dies war nur die offensichtlichste.

26
richard

Es ist ein Weg, ein leeres Set zu bekommen; Zum Beispiel, um eine neue leere Tabelle mit denselben Spalten wie eine vorhandene zu erstellen.

SELECT TOP 0 * INTO new_table FROM old_table

Oder als Quelle für Spaltennamen
Oder um Spaltendetails, aber keine Daten an eine Client-Ebene zurückzugeben
Oder als Abfrage zum Überprüfen der Konnektivität

Es ist dasselbe wie;

SELECT * FROM table WHERE 0=1
41
Alex K.

Auf diese Weise erhalten Sie eine leere Ergebnismenge mit allen Spalten anstelle von keinem Ergebnis. Wenn das Programm, das die gespeicherte Prozedur verwendet, bestimmte Spalten erwartet, würde es andernfalls abstürzen.

3
Mr47

Sie können dies verwenden, um die Spaltennamen zu erfassen.

2
dtbarne

Verwenden Sie diese Option, um eine temporäre Tabelle zu erstellen, in der sich die Sortierung Ihrer DB und TEMPDB möglicherweise unterscheidet.

SELECT TOP(0) column INTO #temp FROM [mytable]

Erzeugt eine temporäre Tabelle mit derselben Sortierung wie meine Tabelle. Das heißt dann

SELECT * FROM #temp T INNER JOIN [mytable] M ON M.column=T.column

Schlägt aufgrund eines Kollatierungsfehlers nicht fehl.

1
Tony M

Lassen Sie mich eine zusätzliche Verwendung bereitstellen:

Wenn Sie möchten, dass eine Nachricht in der Ausgabe und nicht in Nachrichten gedruckt wird, können Sie Folgendes verwenden

select top 0 0 'Your message here'

anstatt

print 'Your message here'

0
George Menoutis