Wie unter Verwenden allgemeiner Tabellenausdrücke in MSDN gezeigt, können Sie einen CTE wie folgt definieren: WITH expression_name [ ( column_name [,...n] ) ] AS ( CTE_query_definition ) und benutze es wie: SELECT <column_list> FROM expression_name; Angenommen, ich habe folgende 2 CTEs with cte1 as( select name from Table1 ) with …
Vor einiger Zeit veröffentlichte Brent Ozar einen Beitrag, in dem einige der Unterschiede zwischen SQL Server und PostgreSQL beschrieben wurden: Zwei wichtige Unterschiede zwischen SQL Server und PostgreSQL Der erste Punkt („CTEs sind Optimierungszäune“) ist mir aufgefallen, da es offensichtlich ist, dass SQL Server im bereitgestellten Beispiel den CTE und …
Ich verwende den folgenden rekursiven CTE als minimales Beispiel, aber im Allgemeinen muss der Optimierer standardmäßige "erratene" Kardinalitäten für rekursive CTEs verwenden: with recursive w(n) as ( select 1 union all select n+1 from w where n<5 ) select * from w; /* n --- 1 2 3 4 5 …
Ich habe dieses funktionierende CTE-Beispiel. Ich kann alle Großeltern und alle Kinder auswählen. Aber wie kann ich alle Großeltern und alle Kinder in einer Aussage auswählen? In diesem Beispiel möchte ich Großvater, Vater, Sohn als Ausgabe, wenn ich "Vater" als Eingabe gebe. Ich benutze PostgreSQL. Aber ich denke, diese Frage …
In Inline-Ansichten können Sie aus einer Unterabfrage auswählen, als wäre es eine andere Tabelle: SELECT * FROM /* Selecting from a query instead of table */ ( SELECT c1 FROM t1 WHERE c1 > 0 ) a WHERE a.c1 < 50; Ich habe gesehen, dass dies mit verschiedenen Begriffen bezeichnet …
Ich verwende einen rekursiven CTE für eine Baumstruktur, um alle Nachkommen eines bestimmten Knotens im Baum aufzulisten. Wenn ich einen Literalknotenwert in meine WHEREKlausel schreibe , scheint SQL Server den CTE tatsächlich nur auf diesen Wert anzuwenden, wodurch ein Abfrageplan mit geringen tatsächlichen Zeilenzahlen usw. erstellt wird : Wenn ich …
Ich habe eine Tabelle Categorymit einer Spalte namens CategoryID. In derselben Tabelle befindet sich eine Referenzierungsspalte mit dem Namen fParentCategoryID. Ich muss alle Kategorie-IDs und ihre Unterkategorie-IDs durch Kommas trennen. Zum Beispiel: Wenn die übergeordnete Kategorie-ID 10 1 ist und wenn die übergeordnete Kategorie-ID 20 10 ist, muss ich beim …
Ist es möglich, in SQL Server 2012 etwas Ähnliches wie das Folgende zu tun? IF EXISTS ( WITH DATA AS ( SELECT *, ROW_NUMBER() OVER(PARTITION BY column ORDER BY Column) AS rn FROM table ) SELECT * FROM DATA WHERE rn = 2 ) BEGIN ... END Ich habe versucht, …
Ich habe eine komplizierte Unterabfrage, die eine Liste von Auftrags-IDs zurückgibt. Ich brauche eine Liste der Kunden, die diese Bestellungen haben. Das Problem ist, dass es zwei Möglichkeiten gibt, einen Kunden einer Bestellung zuzuweisen (eines von zwei Feldern). Ich könnte einfach so etwas machen: select * from Customers where orderId …
Ich verstehe nicht, was Craig Ringer meinte, als er kommentierte: Diese Lösung kann verloren gehen, wenn die Einfügetransaktion zurückgesetzt wird. Es wird nicht überprüft, ob das UPDATE Zeilen betrifft. unter https://stackoverflow.com/a/8702291/14731 . Bitte geben Sie eine Beispielsequenz von Ereignissen an (z. B. Thread 1 macht X, Thread 2 macht Y), …
Benötigen Sie Hilfe bei der rekursiven CTE-Leistung? Unterhalb läuft CTE sehr langsam, da versucht wird, heirarchische Daten rekusiv abzurufen. Die Tabelle ist groß, wobei jede Root-ID bis zu 3 rekursive Element-IDs enthält. Es könnten ungefähr 200000 oder mehr Root-IDs vorhanden sein. Ich weiß, dass rekursive CTEs für große Datenmengen langsam …
Wenn ich einen Cte wie den folgenden Code habe. Wie oft wird der Tisch abgefragt? Ich hatte den Eindruck, dass es nur einmal aufgerufen und im Speicher gespeichert wurde, aber einige meiner Abfragen, die ich ausgeführt habe, scheinen viel länger zu laufen, als sie sein sollten. Was mich glauben lässt, …
Ich bin auf eine Frage wie diese gestoßen: SELECT (SELECT COUNT(1) FROM Orders o WHERE i.ItemId = o.ItemId) [C] FROM Items i Ich habe es in folgendes geändert ;WITH cte_count AS ( SELECT COUNT(1) c, OrderId FROM Orders Group By ItemId ) SELECT a.c [Count], i.Name FROM Items i INNER …
Ich bin ein wenig ratlos über dieses CTE-Update: DECLARE @a TABLE (ID int, Value int); DECLARE @b TABLE (ID int, Value int); INSERT @a VALUES (1, 10), (2, 20); INSERT @b VALUES (1, 100),(2, 200); WITH cte AS ( SELECT * FROM @a ) UPDATE cte SET Value = b.Value …
;WITH cte_Date ( DateCode_FK ) AS ( SELECT DATEADD( DAY, 1 - ROW_NUMBER() OVER ( ORDER BY so1.object_id ), GETDATE() ) FROM sys.objects so1 CROSS APPLY sys.objects so2 ) SELECT TOP 10 d.DateCode_FK FROM cte_Date d ORDER BY d.DateCode_FK DESC; Keine übermäßig interessante Abfrage, aber ich erhalte eine Fehlermeldung, wenn …
We use cookies and other tracking technologies to improve your browsing experience on our website,
to show you personalized content and targeted ads, to analyze our website traffic,
and to understand where our visitors are coming from.
By continuing, you consent to our use of cookies and other tracking technologies and
affirm you're at least 16 years old or have consent from a parent or guardian.