Δευτερεύοντα ερωτήματα SQL

Σημείωση: Θέλουμε να σας παρέχουμε το πιο πρόσφατο περιεχόμενο βοήθειας στη γλώσσα σας όσο πιο σύντομα γίνεται. Αυτή η σελίδα έχω μεταφραστεί μέσω αυτοματοποιημένης διαδικασίας και ενδεχομένως να περιέχει γραμματικά λάθη και ανακρίβειες. Ο σκοπός μας είναι αυτό το περιεχόμενο να σας φανεί χρήσιμο. Μπορείτε να μας ενημερώσετε στο κάτω μέρος αυτής της σελίδας εάν οι πληροφορίες σάς φάνηκαν χρήσιμες; Εδώ θα βρείτε το άρθρο στα Αγγλικά, για να το συμβουλεύεστε εύκολα.

Ένα δευτερεύον ερώτημα είναι ένθετο μέσα σε μια ΕΠΙΛΟΓΉ, ΕΠΙΛΈΞΤΕ μια πρόταση SELECT... ΣΤΟ, ΕΙΣΑΓΩΓΉ... Δήλωση σε, ΔΙΑΓΡΑΦΉ ή ΕΝΗΜΈΡΩΣΗ ή μέσα σε ένα άλλο δευτερεύον ερώτημα.

Σύνταξη

Μπορείτε να χρησιμοποιήσετε τρεις μορφές σύνταξης για να δημιουργήσετε ένα δευτερεύον ερώτημα:

σύγκριση [ΟΠΟΙΑΔΉΠΟΤΕ | ΌΛΑ | ΟΡΙΣΜΈΝΕΣ] (sqlstatement)

παράσταση [NOT] ΣΤΟ (sqlstatement)

[NOT] EXISTS (sqlstatement)

Ένα δευτερεύον ερώτημα έχει τα εξής τμήματα:

Τμήμα

Περιγραφή

σύγκριση

Μια παράσταση και έναν τελεστή σύγκρισης που συγκρίνει την παράσταση με τα αποτελέσματα του δευτερεύοντος ερωτήματος.

παράσταση

Μια παράσταση για την οποία γίνεται αναζήτηση το σύνολο των αποτελεσμάτων του δευτερεύοντος ερωτήματος.

πρόταση_sql

Μια πρόταση SELECT που ακολουθεί την ίδια μορφή και κανόνες ως πρόταση SELECT. Πρέπει να περικλείεται σε παρενθέσεις.


Παρατηρήσεις

Μπορείτε να χρησιμοποιήσετε ένα δευτερεύον ερώτημα αντί για μια παράσταση στη λίστα πεδίων μιας πρότασης SELECT ή σε μια ΘΈΣΗ ή όρος 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 (με την προαιρετική μη δεσμευμένη λέξη) σε συγκρίσεις true/false για να προσδιορίσετε αν το δευτερεύον ερώτημα επιστρέφει τις εγγραφές.

Μπορείτε επίσης να χρησιμοποιήσετε ψευδώνυμα όνομα πίνακα σε ένα δευτερεύον ερώτημα για να ανατρέξετε στις πινάκων που αναφέρονται σε έναν όρο FROM εκτός του δευτερεύοντος ερωτήματος. Το παρακάτω παράδειγμα επιστρέφει τα ονόματα των υπαλλήλων των οποίων μισθούς είναι ίση ή μεγαλύτερη από τον μέσο μισθό όλων των υπαλλήλων με τον ίδιο τίτλο εργασίας. Ο πίνακας υπάλληλοι ανατίθεται το ψευδώνυμο "Τ1":

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.

×