Megjegyzés
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhat bejelentkezni vagy módosítani a címtárat.
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhatja módosítani a címtárat.
A következőkre vonatkozik:Azure Synapse Analytics Analytics
platformrendszer (PDW)
SQL-végpont a Microsoft Fabric
Warehouse-ban a Microsoft Fabricben
Ez a témakör a Azure Synapse Analyticsben, az Elemzési platformrendszerben (PDW) vagy a Microsoft Fabricben használt albekérdezésekre mutat be példákat.
A SELECT utasításért lásd: SELECT (Transact-SQL)
Tartalom
Alapvető beállítások
Segédlekérdezés
Az albekérdezés egy SELECT, INSERT, UPDATE vagy DELETE utasításba vagy egy másik alkikérdezésbe ágyazott lekérdezés. Ezt belső lekérdezésnek vagy belső kijelölésnek is nevezik.
Külső lekérdezés
Az alkikérdezéseket tartalmazó utasítás. Ezt külső kijelölésnek is nevezik.
Korrelált subquery
A külső lekérdezés egy táblájára hivatkozó al lekérdezés.
Példák: Azure Synapse Elemzési és elemzési platformrendszer (PDW)
Ez a szakasz a Azure Synapse Analytics- vagy Elemzési platformrendszerben (PDW) támogatott albekérdezésekre mutat be példákat.
A. TOP és ORDER BY egy alkérdezésben
SELECT * FROM tblA
WHERE col1 IN
(SELECT TOP 100 col1 FROM tblB ORDER BY col1);
B. HAVING záradék egy korrelált alkonyattal
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. Korrelált albekérdezések elemzésekkel
SELECT * FROM ReplA AS A
WHERE A.ID IN
(SELECT sum(B.ID2) OVER() FROM ReplB AS B WHERE A.ID2 = B.ID);
D. Egy részkikérdezés korrelált egyesítő nyilatkozatai
SELECT * FROM RA
WHERE EXISTS
(SELECT 1 FROM RB WHERE RB.b1 = RA.a1
UNION ALL SELECT 1 FROM RC);
E. Predikátumok összekapcsolása egy alkonyatban
SELECT * FROM RA INNER JOIN RB
ON RA.a1 = (SELECT COUNT(*) FROM RC);
F. Korrelált illesztés predikátumok egy al lekérdezésben
SELECT * FROM RA
WHERE RA.a2 IN
(SELECT 1 FROM RB INNER JOIN RC ON RA.a1=RB.b1+RC.c1);
G. Korrelált alkijelölések adatforrásként
SELECT * FROM RA
WHERE 3 = (SELECT COUNT(*)
FROM (SELECT b1 FROM RB WHERE RB.b1 = RA.a1) X);
H. Az aggregátumokkal használt adatértékek korrelált alkérdezései
SELECT Rb.b1, (SELECT RA.a1 FROM RA WHERE RB.b1 = RA.a1) FROM RB GROUP BY RB.b1;
I. IN használata korrelált alkonyatokkal
Az alábbi példa egy korrelált vagy ismétlődő alkérdezésben használ IN . Ez egy olyan lekérdezés, amely az értékei külső lekérdezésétől függ. A belső lekérdezést a rendszer többször futtatja, minden egyes sorhoz, amelyet a külső lekérdezés kijelölhet. Ez a lekérdezés lekéri minden EmployeeKey alkalmazott plusz vezeték- és utónevének egy példányát, amelynek a OrderQuantity táblában a FactResellerSales neve szerepel5, és amelynek az alkalmazotti azonosítószámai megegyeznek a és FactResellerSales a DimEmployee táblákban.
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. A EXISTS és az IN használata egy al lekérdezéssel
Az alábbi példa szemantikailag egyenértékű lekérdezéseket mutat be a kulcsszó és a EXISTS kulcsszó használata közötti különbség szemléltetéséhez IN . Mindkettő példa egy al lekérdezésre, amely minden olyan terméknév egy példányát kéri le, amelynek a termék alkategóriája .Road Bikes
ProductSubcategoryKeyegyezések a és DimProductSubcategory a DimProduct táblák között.
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;
Vagy
SELECT DISTINCT EnglishProductName
FROM DimProduct AS dp
WHERE dp.ProductSubcategoryKey IN
(SELECT ProductSubcategoryKey
FROM DimProductSubcategory
WHERE EnglishProductSubcategoryName = 'Road Bikes')
ORDER BY EnglishProductName;
K. Több korrelált albekérdezés használata
Ez a példa két korrelált alkérdezés használatával keresi meg azoknak az alkalmazottaknak a nevét, akik egy adott terméket értékesítettek.
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;