Microsoft hesabıyla oturum açın
Oturum açın veya hesap oluşturun.
Merhaba,
Farklı bir hesap seçin.
Birden çok hesabınız var
Oturum açmak istediğiniz hesabı seçin.

Alt sorgu, SELECT, SELECT... içine yerleştirilmiş bir SELECT deyimidir. INTO, INSERT... INTO, DELETE veya UPDATE deyimi ya da başka bir alt sorgu içinde.

Söz dizimi

Alt sorgu oluşturmak için üç söz dizimi biçimi kullanabilirsiniz:

karşılaştırma [ANY | TÜMÜ | SOME] (sqlstatement)

ifade [NOT] IN (sqlstatement)

[NOT] EXISTS (sqlstatement)

Bir alt sorgu şu bölümlere sahiptir:

Bölüm

Açıklama

Karşılaştırma

İfadeyi alt sorgunun sonuçlarıyla karşılaştıran bir ifade ve karşılaştırma işleci.

ifade

Alt sorgunun sonuç kümesinin arandığı ifade.

sqldeyimi

Diğer SELECT deyimleri ile aynı biçimi ve kuralları izleyen bir SELECT deyimi. Parantez içine alınmalıdır.


Notlar

SELECT deyiminin alan listesinde veya WHERE veya HAVING yan tümcesinde ifade yerine bir alt sorgu kullanabilirsiniz. Bir alt sorguda, WHERE veya HAVING yan tümcesi ifadesinde değerlendirilecek bir veya daha fazla belirli değer kümesi sağlamak için SELECT deyimi kullanırsınız.

Ana sorguda alt sorguda alınan tüm kayıtlarla karşılaştırmayı karşılayan kayıtları almak için eş anlamlı olan ANY veya SOME koşulunu kullanın. Aşağıdaki örnek, birim fiyatı yüzde 25 veya daha fazla indirimle satılan herhangi bir ürünün fiyatından daha yüksek olan tüm ürünleri döndürür:

SELECT * FROM Products WHERE UnitPrice > ANY (SELECT UnitPrice FROM OrderDetails WHERE Discount >= .25);

Yalnızca ana sorgudaki alt sorguda alınan tüm kayıtlarla karşılaştırmayı karşılayan kayıtları almak için ALL koşulunu kullanın. Önceki örnekte ANY değerini ALL olarak değiştirdiyseniz, sorgu yalnızca birim fiyatı yüzde 25 veya daha fazla indirimle satılan tüm ürünlerden daha yüksek olan ürünleri döndürür. Bu çok daha kısıtlayıcıdır.

Yalnızca alt sorgudaki bazı kayıtların eşit değer içerdiği ana sorgudaki kayıtları almak için IN koşulunu kullanın. Aşağıdaki örnek, yüzde 25 veya daha fazla indirime sahip tüm ürünleri döndürür:

SELECT * FROM Products WHERE ProductID IN (SELECT ProductID FROM OrderDetails WHERE Discount >= .25);

Buna karşılık, yalnızca alt sorgudaki hiçbir kaydın eşit bir değer içermediği ana sorgudaki kayıtları almak için DEĞİl IN kullanabilirsiniz.

Alt sorgunun herhangi bir kayıt döndürip döndürmediğini belirlemek için true/false karşılaştırmalarında EXISTS koşulunu (isteğe bağlı NOT ayrılmış sözcüğüyle) kullanın.

Alt sorgunun dışındaki FROM yan tümcesinde listelenen tablolara başvurmak için bir alt sorgudaki tablo adı diğer adlarını da kullanabilirsiniz. Aşağıdaki örnek, maaşları aynı iş unvanına sahip tüm çalışanların ortalama maaşına eşit veya ondan büyük olan çalışanların adlarını döndürür. Employees tablosuna "T1" diğer adı verilir:

SELECT LastName, FirstName, Title, Salary FROM Employees AS T1 WHERE Salary >= (SELECT Avg(Salary) FROM Employees WHERE T1.Title = Employees.Title) Order by Title;

Yukarıdaki örnekte AS özel amaçlı sözcük isteğe bağlıdır.

Bazı alt sorgulara çapraz sorgularda izin verilir; özellikle koşul olarak (WHERE yan tümcesindekiler). Çıkış olarak alt sorgulara (SELECT listesindekiler) çapraz sorgularda izin verilmez.



Daha fazla yardıma mı ihtiyacınız var?

Daha fazla seçenek mi istiyorsunuz?

Abonelik avantajlarını keşfedin, eğitim kurslarına göz atın, cihazınızın güvenliğini nasıl sağlayacağınızı öğrenin ve daha fazlasını yapın.

Topluluklar, soru sormanıza ve soruları yanıtlamanıza, geri bildirimde bulunmanıza ve zengin bilgiye sahip uzmanlardan bilgi almanıza yardımcı olur.

Bu bilgi yararlı oldu mu?

Dil kalitesinden ne kadar memnunsunuz?
Deneyiminizi ne etkiledi?
Gönder’e bastığınızda, geri bildiriminiz Microsoft ürün ve hizmetlerini geliştirmek için kullanılır. BT yöneticiniz bu verileri toplayabilecek. Gizlilik Bildirimi.

Geri bildiriminiz için teşekkürler!

×