Diese Seite wurde mit KI-Unterstützung aus dem Englischen übersetzt. Bei Abweichungen ist die englische Version maßgeblich.
SELECT
Gibt eine oder mehrere Instanzen einer Ressource zurück.
Siehe auch:
[ StackQL-Ressourcenhierarchie ] [WITH (CTEs)] [Fensterfunktionen]
Syntax
selectStatement::=
[ WITH [ RECURSIVE ] <cteName> [ ( <columnList> ) ] AS ( <selectStatement> ) [, ...] ]
SELECT { * | <fieldList> | <windowFunctionCall> [ AS <alias> ] }
FROM { <multipartIdentifier> | <joinStatement(s)> }
[ WHERE <expression> ]
[ GROUP BY <fieldList> ]
[ HAVING <expression> ]
[ WINDOW <windowName> AS ( <windowSpec> ) [, ...] ]
[ ORDER BY <fieldList> [ ASC | DESC ] ]
[ LIMIT <integer> ]
[ UNION <selectStatement> ];
Ein JOIN ohne ON-Klausel wird als CROSS JOIN behandelt, sodass die Join-Bedingung stattdessen in der WHERE-Klausel angegeben werden kann. StackQL-Releases vor v0.12.732 können einen JOIN ohne Bedingung nicht planen.
Beispiele
Einfache SELECT-Anweisung
Führen Sie eine einfache SELECT-Anweisung in einer authentifizierten Sitzung aus.
-- Selecting all resources deployed within a service using a basic SELECT statement
SELECT * FROM google.compute.instances
WHERE project = 'stackql-demo'
AND zone = 'australia-southeast1-a';
Bestimmte Felder mit einer SELECT-Anweisung zurückgeben
Führen Sie eine SELECT-Anweisung mit einer Spaltenliste aus, um bestimmte Felder einer Compute-Engine-Instanz zurückzugeben.
-- Selecting specified fields from a resource
SELECT id, name
FROM google.compute.instances
WHERE project = 'stackql-demo'
AND zone = 'australia-southeast1-a';
Eine aufsteigend nach einer Spalte sortierte Ergebnismenge mit der ORDER BY-Klausel zurückgeben
Führen Sie eine SELECT-Anweisung aus, um Felder der Cloud-Storage-Buckets-Ressource zurückzugeben und die Ergebnisse aufsteigend (älteste zuerst) zu sortieren.
-- Order a list of Cloud Storage buckets by creation time (in ascending order)
SELECT name, location, timeCreated
FROM google.storage.buckets WHERE project = 'stackql'
ORDER BY timeCreated;
Eine absteigend nach einer Spalte sortierte Ergebnismenge mit der ORDER BY-Klausel zurückgeben
Führen Sie eine SELECT-Anweisung aus, um Felder der Cloud-Storage-Buckets-Ressource zurückzugeben und die Ergebnisse absteigend (neueste zuerst) zu sortieren.
-- Order a list of Cloud Storage buckets by creation time (in descending order)
SELECT name, location, timeCreated
FROM google.storage.buckets WHERE project = 'stackql'
ORDER BY timeCreated DESC;
Das oberste Ergebnis einer Spalte mit den Klauseln ORDER BY und LIMIT abrufen
Führen Sie eine SELECT-Anweisung aus, um den zuletzt erstellten Cloud-Storage-Bucket zurückzugeben.
-- Find the most recently created bucket
SELECT name, location, timeCreated
FROM google.storage.buckets WHERE project = 'stackql'
ORDER BY timeCreated DESC LIMIT 1;
Die Funktion COUNT mit den Klauseln GROUP BY und HAVING verwenden, um Ressourcen anhand einer Gruppierung und eines Filters zu zählen
Führen Sie eine SELECT-Anweisung mit der Funktion COUNT aus und verwenden Sie die Klauseln GROUP BY und HAVING, um die Anzahl der Buckets an jedem Standort außer Asien zurückzugeben.
-- Return a count of the number of buckets in every location other than Asia
SELECT name, location, count(*) as num_buckets
FROM google.storage.buckets WHERE project = 'stackql'
GROUP BY location
HAVING location != 'ASIA';
Weitere Informationen zur Funktion COUNT und zu anderen von StackQL unterstützten Aggregatfunktionen finden Sie unter Aggregatfunktionen.
Liste der On-Demand-VMs und der zugehörigen Netzwerkschnittstelle aus einem Azure VM Scaleset abrufen
Führen Sie eine SELECT-Anweisung mit den Funktionen SPLIT_PART und JSON_EXTRACT aus, um die Liste der OD-VMs und ihrer NICs abzurufen. Beachten Sie, dass subscription_id und resource_group_name ohne Qualifizierer auf alle drei Ressourcen angewendet werden.
SELECT c.name AS vm_name,
SPLIT_PART(JSON_EXTRACT(c.properties,'$.networkProfile.networkInterfaces[0].id'), '/', -1) AS nic_name
FROM
azure.compute.virtual_machine_scale_sets a
INNER JOIN azure.compute.virtual_machine_scale_set_vms b
ON a.name = b.virtualMachineScaleSetName
INNER JOIN azure.compute.virtual_machines c
ON b.name = c.name
WHERE subscription_id = '0123456789'
AND resource_group_name = 'vmss-flex'
AND JSON_EXTRACT(c.properties,'$.priority') is null;
Weitere Informationen zu Fensterfunktionen finden Sie unter Fensterfunktionen.
Common Table Expressions (CTEs) mit WITH verwenden
CTEs ermöglichen es Ihnen, temporäre benannte Ergebnismengen zu definieren, auf die in der Hauptabfrage verwiesen werden kann.
-- Combine and rank contributors across multiple repositories
WITH all_contributors AS (
SELECT login, contributions, html_url
FROM github.repos.contributors
WHERE owner = 'stackql' AND repo = 'stackql'
UNION ALL
SELECT login, contributions, html_url
FROM github.repos.contributors
WHERE owner = 'stackql' AND repo = 'stackql-deploy'
UNION ALL
SELECT login, contributions, html_url
FROM github.repos.contributors
WHERE owner = 'stackql' AND repo = 'stackql-provider-registry'
)
SELECT
DENSE_RANK() OVER (ORDER BY SUM(contributions) DESC) as rank,
login,
SUM(contributions) as total_contributions,
MAX(html_url) as html_url
FROM all_contributors
GROUP BY login
ORDER BY total_contributions DESC;
Weitere Informationen zu CTEs finden Sie unter WITH (CTEs).