שאילתות משנה של SQL

הערה: אנו מעוניינים לספק לך את תוכן העזרה העדכני ביותר במהירות האפשרית, בשפה שלך. דף זה תורגם באמצעות אוטומציה והוא עשוי לכלול שגיאות דקדוק או אי-דיוקים. מטרתנו היא כי תוכן זה יהיה שימושי עבורך. האם תוכל לספר לנו אם המידע הועיל לך, בחלק התחתון של דף זה? לנוחותך, הנה המאמר באנגלית.

שאילתת משנה הוא משפט SELECT מקוננות בתוך בחירה, בחר … הוספת לתוך,... הצהרת לתוך, מחיקה או עדכון או בתוך שאילתת משנה אחר.

תחביר

באפשרותך להשתמש בשלוש צורות תחביר כדי ליצור שאילתת משנה:

השוואה [כל | כל | כמה] (sqlstatement)

ביטוי [לא] ב- (sqlstatement)

[לא] EXISTS (sqlstatement)

שאילתת משנה מכיל את החלקים הבאים:

חלק

תיאור

השוואה

ביטוי ואופרטור השוואה המשווה את הביטוי לתוצאות של שאילתת המשנה.

ביטוי

ביטוי שעבורו מתבצע ערכת התוצאות של שאילתת המשנה.

sqlstatement

משפט SELECT, ביצוע את אותו עיצוב והכללים בתור משפט SELECT אחרים. עליו להיות מוקף בסוגריים.


הערות

באפשרותך להשתמש בשאילתת משנה במקום בביטוי ברשימת השדות של משפט SELECT או ב- WHERE או HAVING. בשאילתת, תשתמש משפט SELECT יספקו לך שורה של הערכים ספציפי אחד או יותר שיש להעריך ב- WHERE או HAVING.

השתמש בפרדיקאט כל או חלק, השקולים, כדי לאחזר רשומות בשאילתה הראשית העומדות בהשוואה לכל אחת מהרשומות שאוחזרו בשאילתת המשנה. הדוגמה הבאה מחזירה את כל המוצרים שאת מחיר יחידה גדול מערך של כל מוצר שנמכרו בהנחה של 25 אחוז ומעלה:

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

השתמש בפרדיקאט ALL כדי לאחזר רק את הרשומות בשאילתה הראשית העומדות בהשוואה לכל הרשומות שאוחזרו בשאילתת המשנה. אם שינית את אחת לכל בדוגמה הקודמת, השאילתה תחזיר רק את המוצרים שאת מחיר יחידה גדול מערך של כל המוצרים שנמכרו בהנחה של 25 אחוז ומעלה. זהו מגבילה הרבה יותר.

השתמש בפרדיקאט IN כדי לאחזר רק את הרשומות בשאילתה הראשית שעבורו מסוימים רשומה בשאילתת מכיל ערך שווה. הדוגמה הבאה מחזירה את כל המוצרים עם הנחה של 25 אחוז ומעלה:

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

לעומת זאת, באפשרותך להשתמש NOT IN כדי לאחזר רק את הרשומות בשאילתה הראשית שעבורם אין רשומה בשאילתת מכיל ערך שווה.

השתמש בפרדיקאט EXISTS (עם האופציונלית NOT במילה השמורה) בהשוואות true/false כדי לקבוע אם שאילתת המשנה מחזירה רשומות כלשהן.

באפשרותך גם להשתמש בכינויי שמות טבלה בשאילתת כדי להפנות אל טבלאות שצוינו בפסוקית from מחוץ שאילתת המשנה. הדוגמה הבאה מחזירה את שמות העובדים משכורות שאת הן השכר הממוצע של כל העובדים בעלי אותו תפקיד גדול או שווה. הטבלה Employees מבוטאת את הכינוי "T1":

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

בדוגמה הקודמת, AS מילה שמורה הוא אופציונלי.

שאילתות משנה מסוימות אינן בשאילתות הצלבות — ספציפית, כמו פרדיקאטים (אלה במשפט where). שאילתות משנה כפלט (אלה שברשימה SELECT) אינם מותרים בשאילתות הצלבות.



שפר את הכישורים שלך ב- Office
סייר בהדרכה
קבל תכונות חדשות לפני כולם
הצטרף למשתתפי Office Insider

האם מידע זה היה שימושי?

תודה על המשוב!

תודה על המשוב! נראה שכדאי לקשר אותך לאחד מנציגי התמיכה של Office.

×