Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
Gibt die von einer Abfrage zurückgegebenen Elemente an.
Syntax
SELECT [ ALL | DISTINCT ] [ topSubclause ] aliasedExpr
[{ , aliasedExpr }] FROM fromClause [ WHERE whereClause ] [ GROUP BY groupByClause [ HAVING havingClause ] ] [ ORDER BY orderByClause ]
-- or
SELECT VALUE [ ALL | DISTINCT ] [ topSubclause ] expr FROM fromClause [ WHERE whereClause ] [ GROUP BY groupByClause [ HAVING havingClause ] ] [ ORDER BY orderByClause
Argumente
ALL Gibt an, dass Duplikate im Resultset angezeigt werden können. ALL ist die Standardeinstellung.
DISTINCT Gibt an, dass nur eindeutige Ergebnisse im Resultset angezeigt werden können.
WERT Lässt nur ein Element anzugeben und fügt keinen Zeilenwrapper hinzu.
topSubclause Ein beliebiger gültiger Ausdruck, der die Anzahl der ersten Ergebnisse angibt, die aus der Abfrage zurückgegeben werden sollen, des Formulars top(expr).
Mit dem LIMIT-Parameter des OPERATOR ORDER BY können Sie auch die ersten n Elemente im Resultset auswählen.
aliasedExpr Ein Ausdruck des Formulars:
expr wie identifier | expr
expr Ein Literal oder Ausdruck.
Bemerkungen
Die SELECT-Klausel wird ausgewertet, nachdem die FROM-, GROUP BY- und HAVING-Klauseln ausgewertet wurden. Die SELECT-Klausel kann nur auf Elemente verweisen, die sich derzeit im Gültigkeitsbereich befinden (aus der FROM-Klausel oder aus äußeren Bereichen). Wenn eine GROUP BY-Klausel angegeben wurde, darf die SELECT-Klausel nur auf die Aliase für die GROUP BY-Schlüssel verweisen. Das Verweisen auf die FROM-Klauselnelemente ist nur in Aggregatfunktionen zulässig.
Die Liste eines oder mehrerer Abfrageausdrücke nach dem SELECT-Schlüsselwort wird als Auswahlliste oder formaler als Projektion bezeichnet. Die allgemeinste Projektionsform ist ein einzelner Abfrageausdruck. Wenn Sie ein Element member1 aus einer Auflistung collection1auswählen, erstellen Sie eine neue Auflistung aller member1 Werte für jedes Objekt, collection1wie im folgenden Beispiel dargestellt.
SELECT collection1.member1 FROM collection1
Wenn customers es sich z. B. um eine Sammlung vom Typ Customer handelt, die eine Eigenschaft Name vom Typ stringhat, gibt die Auswahl Name aus customers einer Auflistung von Zeichenfolgen zurück, wie im folgenden Beispiel dargestellt.
SELECT customers.Name FROM customers AS c
Es ist auch möglich, JOIN-Syntax (FULL, INNER, LEFT, OUTER, ON und RIGHT) zu verwenden. ON ist für innere Verknüpfungen erforderlich und ist für Kreuzverknungen zulässig.
Zeilen- und Wertauswahlklauseln
Entity SQL unterstützt zwei Varianten der SELECT-Klausel. Die erste Variante, Zeilenauswahl, wird durch das SELECT-Schlüsselwort identifiziert und kann verwendet werden, um einen oder mehrere Werte anzugeben, die projiziert werden sollen. Da ein Zeilenwrapper implizit um die zurückgegebenen Werte herum hinzugefügt wird, ist das Ergebnis des Abfrageausdrucks immer eine Mehrfachmenge von Zeilen.
Jeder Abfrageausdruck in einer Zeilenauswahl muss einen Alias angeben. Wenn kein Alias angegeben ist, versucht Entity SQL, einen Alias mithilfe der Aliasgenerierungsregeln zu generieren.
Die andere Variante der SELECT-Klausel, Wertauswahl, wird durch das SELECT VALUE-Schlüsselwort identifiziert. Es kann nur ein Wert angegeben werden und kein Zeilenwrapper hinzugefügt werden.
Eine Zeilenauswahl ist in Bezug auf WERTAUSWAHL immer ausdrucksfähig, wie im folgenden Beispiel dargestellt.
SELECT 1 AS a, "abc" AS b FROM C
SELECT VALUE ROW(1 AS a, "abc" AS b) FROM C
Alle und unterschiedliche Modifizierer
Beide Varianten von SELECT in Entity SQL ermöglichen die Spezifikation eines ALL- oder DISTINCT-Modifizierers. Wenn der DISTINCT-Modifizierer angegeben wird, werden Duplikate aus der vom Abfrageausdruck erzeugten Auflistung (bis einschließlich der SELECT-Klausel) entfernt. Wenn der ALL-Modifizierer angegeben ist, wird keine duplizierte Eliminierung durchgeführt; ALL ist die Standardeinstellung.
Unterschiede von Transact-SQL
Im Gegensatz zu Transact-SQL unterstützt Entity SQL die Verwendung des *-Arguments in der SELECT-Klausel nicht. Stattdessen ermöglicht Entity SQL Abfragen, ganze Datensätze zu projizieren, indem auf die Sammlungsaliasen aus der FROM-Klausel verwiesen wird, wie im folgenden Beispiel dargestellt.
SELECT * FROM T1, T2
Der vorherige Transact-SQL Abfrageausdruck wird wie folgt in Entity SQL ausgedrückt.
SELECT a1, a2 FROM T1 AS a1, T2 AS a2
Beispiel
Die folgende Entity SQL-Abfrage verwendet den SELECT-Operator, um die Elemente anzugeben, die von einer Abfrage zurückgegeben werden sollen. Die Abfrage basiert auf dem AdventureWorks Sales Model. Führen Sie die folgenden Schritte aus, um diese Abfrage zu kompilieren und auszuführen:
Gehen Sie wie folgt vor : Ausführen einer Abfrage, die StrukturelleType-Ergebnisse zurückgibt.
Übergeben Sie die folgende Abfrage als Argument an die
ExecuteStructuralTypeQueryMethode:
SELECT VALUE product FROM AdventureWorksEntities.Products
AS product WHERE product.ListPrice < @price