Microsoft SQL Server
SELECT-Anweisung
Suche…
Einführung
In SQL geben SELECT
Anweisungen Ergebnissätze aus Datensammlungen wie Tabellen oder Ansichten zurück. SELECT
Anweisungen können mit verschiedenen anderen Klauseln wie WHERE
, GROUP BY
oder ORDER BY
, um die gewünschten Ergebnisse weiter zu verfeinern.
Grundauswahl aus der Tabelle
Wählen Sie alle Spalten aus einer Tabelle aus (Systemtabelle in diesem Fall):
SELECT *
FROM sys.objects
Oder wählen Sie nur einige bestimmte Spalten aus:
SELECT object_id, name, type, create_date
FROM sys.objects
Zeilen mit der WHERE-Klausel filtern
Die WHERE-Klausel filtert nur die Zeilen, die bestimmte Bedingungen erfüllen:
SELECT *
FROM sys.objects
WHERE type = 'IT'
Sortieren Sie die Ergebnisse mit ORDER BY
Die ORDER BY-Klausel sortiert Zeilen in der zurückgegebenen Ergebnismenge nach einer Spalte oder einem Ausdruck:
SELECT *
FROM sys.objects
ORDER BY create_date
Ergebnis mit GROUP BY zusammenfassen
GROUP BY-Klausel gruppiert Zeilen nach einem bestimmten Wert:
SELECT type, count(*) as c
FROM sys.objects
GROUP BY type
Sie können für jede Gruppe eine Funktion anwenden (Aggregatfunktion), um die Summe oder Anzahl der Datensätze in der Gruppe zu berechnen.
Art | c |
---|---|
SQ | 3 |
S | 72 |
ES | 16 |
PK | 1 |
U | 5 |
Filtern Sie Gruppen mithilfe der HAVING-Klausel
Die HAVING-Klausel entfernt Gruppen, die die Bedingung nicht erfüllen:
SELECT type, count(*) as c
FROM sys.objects
GROUP BY type
HAVING count(*) < 10
Art | c |
---|---|
SQ | 3 |
PK | 1 |
U | 5 |
Nur die ersten N Zeilen zurückgeben
TOP-Klausel gibt nur die ersten N Zeilen im Ergebnis zurück:
SELECT TOP 10 *
FROM sys.objects
Paginierung mit OFFSET FETCH
Die Klausel OFFSET FETCH ist eine fortgeschrittenere Version von TOP. Sie können N1-Zeilen überspringen und die nächsten N2-Zeilen übernehmen:
SELECT *
FROM sys.objects
ORDER BY object_id
OFFSET 50 ROWS FETCH NEXT 10 ROWS ONLY
Sie können OFFSET ohne Abruf verwenden, um nur die ersten 50 Zeilen zu überspringen:
SELECT *
FROM sys.objects
ORDER BY object_id
OFFSET 50 ROWS
SELECT ohne FROM (keine Datenquelle)
SELECT-Anweisung kann ohne FROM-Klausel ausgeführt werden:
declare @var int = 17;
SELECT @var as c1, @var + 2 as c2, 'third' as c3
In diesem Fall wird eine Zeile mit Werten / Ergebnissen von Ausdrücken zurückgegeben.