IN ile alt sorgular
IN (veya NOT ın) gelen bir alt sorgunun sonucunu bir veya daha fazla değer listesidir.Alt sorgunun sonuçlar verir sonra dış alt sorgu yapar bunları kullanın.
Aşağıdaki sorgu, tekerlek ürün adlarını bulurAdventure Works Cyclesyapar.
USE AdventureWorks;
GO
SELECT Name
FROM Production.Product
WHERE ProductSubcategoryID IN
(SELECT ProductSubcategoryID
FROM Production.ProductSubcategory
WHERE Name = 'Wheels')
Sonuç şudur:
Name
--------------------------------------------------
LL Mountain Front Wheel
ML Mountain Front Wheel
HL Mountain Front Wheel
LL Road Front Wheel
ML Road Front Wheel
HL Road Front Wheel
Touring Front Wheel
LL Mountain Rear Wheel
ML Mountain Rear Wheel
HL Mountain Rear Wheel
LL Road Rear Wheel
ML Road Rear Wheel
HL Road Rear Wheel
Touring Rear Wheel
(14 row(s) affected)
Bu deyim, iki adımda değerlendirilir.Önce İç sorgunun 'Teker' (17) adıyla eşleşen alt kategori kimliği döndürür.İkinci olarak, bu değeri yerine içine dış sorguyu gidin alt kimlik numaraları ile ürün adlarını bulurProduct.
USE AdventureWorks;
GO
SELECT Name
FROM Production.Product
WHERE ProductSubcategoryID in ('17')
birleştirmek alt sorgu için bunun yerine, tek fark ve benzer sorunları birleştirmek, sonuçta daha fazla tablodan sütun Göster olanak sağlar.Örneğin, ürün alt kategorisi adı sonucu eklemek isterseniz, bir birleştirmek sürüm kullanmanız gerekir.
Use AdventureWorks;
GO
SELECT p.Name, s.Name
FROM Production.Product p
INNER JOIN Production.ProductSubcategory s
ON p.ProductSubcategoryID = s.ProductSubcategoryID
AND s.Name = 'Wheels'
Sonuç şudur:
Name Name
LL Mountain Front Wheel Wheels
ML Mountain Front Wheel Wheels
HL Mountain Front Wheel Wheels
LL Road Front Wheel Wheels
ML Road Front Wheel Wheels
HL Road Front Wheel Wheels
Touring Front Wheel Wheels
LL Mountain Rear Wheel Wheels
ML Mountain Rear Wheel Wheels
HL Mountain Rear Wheel Wheels
LL Road Rear Wheel Wheels
ML Road Rear Wheel Wheels
HL Road Rear Wheel Wheels
Touring Rear Wheel Wheels
(14 row(s) affected)
Aşağıdaki sorgu tüm satıcılar, Kredi notu, kim tarafından iyi adını bulurAdventure Works Cyclessiparişler en az 20 öğe ve teslim etmek için ortalama sağlama saat olan az 16 gün.
Use AdventureWorks;
GO
SELECT Name
FROM Purchasing.Vendor
WHERE CreditRating = 1
AND VendorID IN
(SELECT VendorID
FROM Purchasing.ProductVendor
WHERE MinOrderQty >= 20
AND AverageLeadTime < 16)
Sonuç şudur:
Name
--------------------------------------------------
Electronic Bike Repair & Supplies
Comfort Road Bicycles
Compete, Inc.
Compete Enterprises, Inc
First Rate Bicycles
First National Sport Co.
Competition Bike Training Systems
Circuit Cycles
Crowley Sport
Expert Bike Co
(10 row(s) affected)
İç sorgunun alt sorgu niteliklere uyan satıcıları kimlik numaralarını üretme değerlendirilir.Dış sorguyu daha sonra değerlendirilir.İç ve dış sorgunun WHERE yan tümcesinde birden fazla koşul içerebilir dikkat edin.
birleştirmek kullanarak, aynı sorguyu aşağıdaki gibi ifade edilir:
USE AdventureWorks;
GO
SELECT DISTINCT Name
FROM Purchasing.Vendor v
INNER JOIN Purchasing.ProductVendor p
ON v.VendorID = p.VendorID
WHERE CreditRating = 1
AND MinOrderQty >= 20
AND AverageLeadTime < 16
birleştirmek, her zaman bir alt sorgu ifade edilebilir.Alt sorgu genellikle olabilir, ancak olarak her zaman ifade bir birleştirmek.Nedeni, birleştirme simetrik: Bir tablo ya da sırada B katılmak ve aynı yanıt. alın Aynı alt sorgu, söz konusu ise, doğru değil.