Wie funktioniert die "Mit" - Schlüsselwort in SQL?
So viele Male gesehen with
und so viele Male SQL-Server Fragen, die mit hat ;
bevor es
Wie funktioniert ;with ...
arbeiten??
;with coords(...) as (
SELECT * ...
)
Warum muss ;
davor?
- Man muß es gesehen haben, während die Schaffung von Einschränkungen auf Ihrem Tische
WITH ( PAD_INDEX = OFF , STATISTICS_NORECOMPUTE = OFF , IGNORE_DUP_KEY = OFF , ALLOW_ROW_LOCKS = ON , ALLOW_PAGE_LOCKS = ON )
die Ergebnisse in mehreren kontextuellen Verwendungen vonwith
- Schlüsselwort zusammen mit common table expression. Semi-colon vermeidet jede Verwirrung, die möglicherweise schleichen sich in den Geist von SQL Server beim analysieren der Abfrage.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Ist das Semikolon in SQL zu Ende einer Abfrage. Setzen Sie, bevor Sie eine Abfrage, wie das ist nur um sicherzugehen, dass die Datenbank versteht, dass jede Vorherige Abfrage beendet ist.
Ursprünglich war es erforderlich, nach jeder Abfrage, wie Sie eingegeben wurden, Zeile um Zeile, so dass die Datenbank hatte zu wissen, Wann die Abfrage ausgeführt wird. Wenn die gesamte Abfrage in einem einzigen string, Sie müssen nur die Semikolons in dem Fall, wo die SQL-syntax ist nicht genug, um festzustellen, wo eine Abfrage endet. Als die
with
keyword unterschiedlich verwendet ein Semikolon wird manchmal benötigt, bevor es um sicherzustellen, dass es ist nicht Teil der vorherigen Abfrage.Mit MIT für CTEs Bedarf der vorherigen Anweisung beendet werden, mit
;
. Mit ihm am start sein, wie diese garantiert eine korrekte syntaxTut So VERSCHMELZEN in SQL Server 2008
Sehen dies SO Frage: Falsche syntax bei das Schlüsselwort 'mit'...Vorherige Anweisung muss mit einem Semikolon beendet werden
Ist es am besten Praxis zu beenden, jede SQL-Anweisung mit einem Semikolon. Der SQL-Server-Dokumente (z.B. hier) schlagen vor, so wird beauftragt, in einer zukünftigen version gibt es wirklich keine Entschuldigung für die nicht immer in die Gewohnheit jetzt.
Antwort auf die Frage: sehen Sie
;WITH...
auf Stackoverflow, weil ENTWEDER die person, die Beantwortung ist ein schlampiger Programmierer ODER die person die Beantwortung übernimmt die person, die Frage zu stellen, ist eine schlampige coder (und Sie werden behaupten es ist letzteres, wenn es ersteres ist 🙂 Die definition von "schlampig " coder" hier ist jemand, der nur verwendet ein Semikolon, wenn Sie gezwungen sind, dies zu tun.Den Einsatz von MIT ist für common table expressions (CTEs). Sie versuchten, Sie zu zwingen, die CTE definiert werden als die erste Anweisung (d.h. nicht verknüpft werden mit anderen teilen der Abfrage daher auch der 😉