Nuta
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zalogować się lub zmienić katalogi.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
Dotyczy:Azure Synapse Analytics Analytics
Platform System (PDW)
PUNKT końcowy SQL w usłudze Microsoft FabricWarehouse w usłudze Microsoft Fabric
W tym temacie przedstawiono przykłady użycia podquerii w usłudze Azure Synapse Analytics, Analytics Platform System (PDW) lub Microsoft Fabric.
Aby uzyskać instrukcję SELECT, zobacz SELECT (Transact-SQL)
Zawartość
Podstawy
Podzapytanie
Podquery to zapytanie zagnieżdżone wewnątrz instrukcji SELECT, INSERT, UPDATE lub DELETE albo wewnątrz innego podquery. Jest to również nazywane zapytaniem wewnętrznym lub zaznaczeniem wewnętrznym.
Zapytanie zewnętrzne
Instrukcja zawierająca podquery. Jest to również nazywane wybieraniem zewnętrznym.
Skorelowane podquery
Podqueria odwołująca się do tabeli w zapytaniu zewnętrznym.
Przykłady: Azure Synapse Analytics and Analytics Platform System (PDW)
Ta sekcja zawiera przykłady podquerii obsługiwanych w systemie Azure Synapse Analytics lub Analytics Platform System (PDW).
A. TOP i ORDER BY w podquery
SELECT * FROM tblA
WHERE col1 IN
(SELECT TOP 100 col1 FROM tblB ORDER BY col1);
B. Klauzula HAVING z skorelowanym podquerią
SELECT dm.EmployeeKey, dm.FirstName, dm.LastName
FROM DimEmployee AS dm
GROUP BY dm.EmployeeKey, dm.FirstName, dm.LastName
HAVING 5000 <=
(SELECT sum(OrderQuantity)
FROM FactResellerSales AS frs
WHERE dm.EmployeeKey = frs.EmployeeKey)
ORDER BY EmployeeKey;
C. Skorelowane podquery z analizą
SELECT * FROM ReplA AS A
WHERE A.ID IN
(SELECT sum(B.ID2) OVER() FROM ReplB AS B WHERE A.ID2 = B.ID);
D. Skorelowane instrukcje unii w podquery
SELECT * FROM RA
WHERE EXISTS
(SELECT 1 FROM RB WHERE RB.b1 = RA.a1
UNION ALL SELECT 1 FROM RC);
E. Dołączanie predykatów w podquery
SELECT * FROM RA INNER JOIN RB
ON RA.a1 = (SELECT COUNT(*) FROM RC);
F. Skorelowane predykaty sprzężenia w podquery
SELECT * FROM RA
WHERE RA.a2 IN
(SELECT 1 FROM RB INNER JOIN RC ON RA.a1=RB.b1+RC.c1);
G. Skorelowane podwybierze jako źródła danych
SELECT * FROM RA
WHERE 3 = (SELECT COUNT(*)
FROM (SELECT b1 FROM RB WHERE RB.b1 = RA.a1) X);
H. Skorelowane podquery w wartościach danych używanych z agregacjami
SELECT Rb.b1, (SELECT RA.a1 FROM RA WHERE RB.b1 = RA.a1) FROM RB GROUP BY RB.b1;
I. Używanie funkcji IN z skorelowanym podquerią
W poniższym przykładzie użyto IN skorelowanego lub powtarzającego się podquery. Jest to zapytanie, które zależy od zewnętrznego zapytania dla jego wartości. Zapytanie wewnętrzne jest uruchamiane wielokrotnie, jeden raz dla każdego wiersza, który może zostać wybrany przez zapytanie zewnętrzne. To zapytanie pobiera jedno wystąpienie EmployeeKey znaku plus i nazwisko każdego pracownika, dla którego OrderQuantity znajduje się tabela 5FactResellerSales i dla którego numery identyfikacyjne pracowników są zgodne z tabelami DimEmployee i FactResellerSales .
SELECT DISTINCT dm.EmployeeKey, dm.FirstName, dm.LastName
FROM DimEmployee AS dm
WHERE 5 IN
(SELECT OrderQuantity
FROM FactResellerSales AS frs
WHERE dm.EmployeeKey = frs.EmployeeKey)
ORDER BY EmployeeKey;
J. Używanie metody EXISTS a IN z podquery
W poniższym przykładzie przedstawiono zapytania, które są semantycznie równoważne, aby zilustrować różnicę między użyciem EXISTS słowa kluczowego IN a słowem kluczowym. Oba są przykładami podquery, która pobiera jedno wystąpienie każdej nazwy produktu, dla którego podkategoria produktu to Road Bikes.
ProductSubcategoryKey dopasowanie między tabelami DimProduct i DimProductSubcategory .
SELECT DISTINCT EnglishProductName
FROM DimProduct AS dp
WHERE EXISTS
(SELECT *
FROM DimProductSubcategory AS dps
WHERE dp.ProductSubcategoryKey = dps.ProductSubcategoryKey
AND dps.EnglishProductSubcategoryName = 'Road Bikes')
ORDER BY EnglishProductName;
Lub
SELECT DISTINCT EnglishProductName
FROM DimProduct AS dp
WHERE dp.ProductSubcategoryKey IN
(SELECT ProductSubcategoryKey
FROM DimProductSubcategory
WHERE EnglishProductSubcategoryName = 'Road Bikes')
ORDER BY EnglishProductName;
K. Używanie wielu skorelowanych podquerii
W tym przykładzie użyto dwóch skorelowanych podquerii, aby znaleźć nazwy pracowników, którzy sprzedali określony produkt.
SELECT DISTINCT LastName, FirstName, e.EmployeeKey
FROM DimEmployee e JOIN FactResellerSales s ON e.EmployeeKey = s.EmployeeKey
WHERE ProductKey IN
(SELECT ProductKey FROM DimProduct WHERE ProductSubcategoryKey IN
(SELECT ProductSubcategoryKey FROM DimProductSubcategory
WHERE EnglishProductSubcategoryName LIKE '%Bikes'))
ORDER BY LastName;