آموزش SQL Server
آموزش SQL Server ۸: زیرکوئری و CTE

Subquery یا زیرکوئری، کوئریای است که داخل کوئری دیگر قرار میگیرد. CTE در SQL Server با WITH تعریف میشود و به خواناتر شدن مراحل یک پرسوجو کمک میکند.
نمونه زیرکوئری
1 2 3 | SELECT ProductName, Price FROM dbo.Products WHERE Price > (SELECT AVG(Price) FROM dbo.Products); |
در این مثال ابتدا میانگین قیمت محاسبه میشود و سپس محصولات گرانتر از میانگین نمایش داده میشوند.
نمونه CTE
1 2 3 4 5 6 7 8 | WITH ExpensiveProducts AS ( SELECT ProductName, Price FROM dbo.Products WHERE Price > 1000 ) SELECT ProductName, Price FROM ExpensiveProducts ORDER BY Price DESC; |
CTE فقط برای همان دستور بلافاصله بعد از تعریف در دسترس است و بهخودیخود نتیجه را بهصورت دائمی ذخیره نمیکند.
کدام روش مناسبتر است؟
برای شرطهای ساده زیرکوئری مناسب است. وقتی چند مرحله محاسبه دارید یا میخواهید منطق کوئری را نامگذاری کنید، CTE معمولاً خواناتر است. برای کارایی، هر دو روش را با داده واقعی و Execution Plan ارزیابی کنید.
پیشنیاز مفید این درس اتصال جدولها با JOIN است. برای پردازش متن و تاریخ نیز درس توابع و CASE را مطالعه کنید.

