PostgreSQL IN, Όχι IN με Παραδείγματα

⚡ Έξυπνη Σύνοψη

PostgreSQL Ο τελεστής IN ελέγχει εάν μια τιμή εμφανίζεται σε μια λίστα ή ένα υποερώτημα μέσα σε έναν όρο WHERE, αντικαθιστώντας πολλαπλές συνθήκες OR σε όλες τις προτάσεις SELECT, UPDATE, INSERT και DELETE για καθαρότερο, ταχύτερο και πιο ευανάγνωστο φιλτράρισμα.

  • 📋 Σύνταξη: Η τιμή IN (λίστα) επιστρέφει true όταν η τιμή ταιριάζει με οποιοδήποτε στοιχείο λίστας.
  • 🔤 Λίστες χαρακτήρων: Περικλείστε τις τιμές κειμένου σε μονά εισαγωγικά μέσα στις παρενθέσεις.
  • 🔢 Αριθμητικές λίστες: Συγκρίνετε αριθμούς απευθείας, χωρίς εισαγωγικά, για ακριβείς αντιστοιχίες.
  • 🚫 ΔΕΝ ΕΙΝΑΙ ΣΤΟ: Επιστρέφει γραμμές των οποίων η τιμή απουσιάζει από την παρεχόμενη λίστα.
  • ⚠️ NULL παγίδα: Ένα NULL μέσα στο NOT IN μπορεί να επιστρέψει σιωπηλά μηδενικές γραμμές.
  • 🤖 Ερωτήματα Τεχνητής Νοημοσύνης: Οι βοηθοί δημιουργούν ρήτρες IN και επισημαίνουν κινδύνους NULL και απόδοσης.

PostgreSQL ΜΕΣΑ, ΟΧΙ ΜΕΣΑ με παραδείγματα

Τι είναι PostgreSQL ΣΕ?

Ο τελεστής IN χρησιμοποιείται σε μια ρήτρα WHERE που επιτρέπει τον έλεγχο της παρουσίας μιας τιμής σε μια λίστα άλλων τιμών. Η λειτουργία IN βοηθά στη μείωση της ανάγκης για πολλαπλές συνθήκες OR σε εντολές SELECT, UPDATE, INSERT ή DELETE.

Σύνταξη

Ο τελεστής IN παίρνει την ακόλουθη σύνταξη:

value IN (value_1, value_2, ...)

Η τιμή είναι η τιμή που ελέγχετε στη λίστα.

Οι τιμές_1, τιμή_2… είναι οι τιμές της λίστας.

Εάν η τιμή βρεθεί στη λίστα, ο χειριστής θα επιστρέψει ένα true.

Η λίστα μπορεί να είναι ένα σύνολο αριθμών ή συμβολοσειρών, ή ακόμα και το αποτέλεσμα εξόδου ενός Δήλωση SELECT όπως φαίνεται παρακάτω:

value IN (SELECT value FROM table-name);

Η δήλωση που τοποθετείται μέσα στην παρένθεση είναι γνωστή ως υποερώτημα.

PostgreSQL ΣΕ με χαρακτήρα

Ας δείξουμε πώς μπορείτε να χρησιμοποιήσετε τον τελεστή IN με τιμές χαρακτήρων.

Σκεφτείτε τον παρακάτω πίνακα:

εργαζόμενοι:

PostgreSQL ΣΕ με χαρακτήρα

Ας εκτελέσουμε το ακόλουθο ερώτημα σε σχέση με τον παραπάνω πίνακα:

SELECT * FROM Employees WHERE name IN ('James John', 'Mercy Bush', 'Kate Joel');

Επιστρέφει τα εξής:

PostgreSQL ΣΕ Με αποτέλεσμα Χαρακτήρα

Έχουμε μια λίστα με τρία ονόματα. Αναζητούμε αν μπορούμε να βρούμε κάποιο από αυτά τα ονόματα στη στήλη ονομάτων του πίνακα "Υπάλληλοι". Η Kate Joel αντιστοιχίστηκε με μία από τις εγγραφές του πίνακα και τα στοιχεία της επιστράφηκαν.

PostgreSQL ΣΕ με αριθμητικό

Τώρα, ας δούμε πώς μπορούμε να χρησιμοποιήσουμε τον τελεστή IN με αριθμητικές τιμές.

Εξετάστε τον πίνακα τιμών που δίνεται παρακάτω:

Τιμή:

PostgreSQL ΣΕ με αριθμητικό

Μπορούμε να εκτελέσουμε το ακόλουθο ερώτημα στον πίνακα:

SELECT * FROM Price WHERE price IN (200, 308, 250, 550);

Αυτό επιστρέφει τα ακόλουθα:

PostgreSQL IN Με αριθμητικό αποτέλεσμα

Δημιουργήσαμε μια λίστα με 4 αριθμητικές τιμές. Ελέγχουμε αν μπορούμε να αντιστοιχίσουμε κάποια από αυτές τις τιμές με τις τιμές που περιέχονται στη στήλη τιμή του πίνακα Τιμή. Δύο τιμές αντιστοιχίστηκαν και τα στοιχεία τους επιστράφηκαν.

Χρησιμοποιώντας το ΟΧΙ OperaTor

Ο τελεστής IN μπορεί να χρησιμοποιηθεί μαζί με τον τελεστή NOT. Επιστρέφει τις τιμές που δεν βρίσκονται στην καθορισμένη στήλη. Θα χρησιμοποιήσουμε τον πίνακα Τιμών για να το δείξουμε αυτό.

SELECT * FROM Price WHERE price NOT IN (200, 400, 190, 230);

Αυτό θα επιστρέψει τα ακόλουθα:

PostgreSQL IN Χρησιμοποιώντας τον τελεστή NOT

Δημιουργήσαμε μια λίστα με 4 αριθμητικές τιμές. Ελέγχουμε τη στήλη τιμών του πίνακα τιμών για τιμές που δεν αποτελούν μέρος της λίστας. Δύο τιμές, 250 και 300, δεν βρέθηκαν. Ως εκ τούτου, τα στοιχεία τους έχουν επιστραφεί.

Χρήση του pgAdmin

Πέρα από το κέλυφος SQL, τα ίδια ερωτήματα IN και NOT IN μπορούν να εκτελεστούν οπτικά μέσω της διεπαφής pgAdmin.

με χαρακτήρα

Για να πετύχετε το ίδιο μέσω του pgAdmin, κάντε το εξής:

Βήμα 1) Συνδεθείτε στον λογαριασμό σας pgAdmin.

Βήμα 2)

  1. Από τη γραμμή πλοήγησης στα αριστερά, κάντε κλικ στην επιλογή Βάσεις δεδομένων.
  2. Κάντε κλικ στο Demo.

Χρήση του pgAdmin με χαρακτήρα

Βήμα 3) Πληκτρολογήστε το ερώτημα στο πρόγραμμα επεξεργασίας ερωτημάτων:

SELECT * FROM Employees WHERE name IN ('James John', 'Mercy Bush', 'Kate Joel');

Βήμα 4) Κάντε κλικ στο κουμπί Εκτέλεση.

Χρήση του pgAdmin με ερώτημα χαρακτήρων

Θα πρέπει να επιστρέψει τα ακόλουθα:

Χρήση του pgAdmin με αποτέλεσμα χαρακτήρων

Με αριθμητικό

Για να πετύχετε το ίδιο μέσω του pgAdmin, κάντε το εξής:

Βήμα 1) Συνδεθείτε στον λογαριασμό σας pgAdmin.

Βήμα 2)

  1. Από τη γραμμή πλοήγησης στα αριστερά, κάντε κλικ στην επιλογή Βάσεις δεδομένων.
  2. Κάντε κλικ στο Demo.

Χρήση του pgAdmin με αριθμητικό

Βήμα 3) Πληκτρολογήστε το ερώτημα στο πρόγραμμα επεξεργασίας ερωτημάτων:

SELECT * FROM Price WHERE price IN (200, 308, 250, 550);

Βήμα 4) Κάντε κλικ στο κουμπί Εκτέλεση.

Χρήση του pgAdmin με αριθμητικό ερώτημα

Θα πρέπει να επιστρέψει τα ακόλουθα:

Χρήση του pgAdmin με αριθμητικό αποτέλεσμα

Χρησιμοποιώντας το ΟΧΙ OperaTor

Για να πετύχετε το ίδιο μέσω του pgAdmin, κάντε το εξής:

Βήμα 1) Συνδεθείτε στον λογαριασμό σας pgAdmin.

Βήμα 2)

  1. Από τη γραμμή πλοήγησης στα αριστερά, κάντε κλικ στην επιλογή Βάσεις δεδομένων.
  2. Κάντε κλικ στο Demo.

Χρήση του τελεστή NOT στο pgAdmin

Βήμα 3) Πληκτρολογήστε το ερώτημα στο πρόγραμμα επεξεργασίας ερωτημάτων:

SELECT * FROM Price WHERE price NOT IN (200, 400, 190, 230);

Βήμα 4) Κάντε κλικ στο κουμπί Εκτέλεση.

Χρήση ερωτήματος τελεστή NOT στο pgAdmin

Θα πρέπει να επιστρέψει τα ακόλουθα:

Η χρήση του τελεστή NOT έχει ως αποτέλεσμα το pgAdmin

Κάντε λήψη της βάσης δεδομένων που χρησιμοποιείται σε αυτό το σεμινάριο

Συχνές Ερωτήσεις

In PostgreSQL, η συνάρτηση EXISTS εκτελείται συχνά πιο γρήγορα από την συνάρτηση IN σε μεγάλα υποερωτήματα, επειδή σταματά στην πρώτη αντιστοίχιση. Για μικρές, σταθερές λίστες, η συνάρτηση IN είναι απλή και αποτελεσματική. Δοκιμάστε και τις δύο με την συνάρτηση EXPLAIN ANALYZE στα δικά σας δεδομένα.

Η συνθήκη NOT IN αντιμετωπίζει την τιμή NULL ως άγνωστη, επομένως εάν η λίστα ή το υποερώτημα περιέχει μια τιμή NULL, ολόκληρη η συνθήκη μπορεί να αξιολογηθεί ως άγνωστη και να επιστρέψει μηδενικές γραμμές. Φιλτράρετε τις τιμές NULL ή χρησιμοποιήστε την τιμή NOT EXISTS.

Η συνάρτηση IN αντικαθιστά τις μεγάλες αλυσίδες συνθηκών OR με μία αναγνώσιμη πρόταση. WHERE id Η συνάρτηση IN (1,2,3) ισούται με WHERE id=1 OR id=2 OR id=3, αλλά είναι συντομότερη, πιο σαφής και πιο εύκολη στη συντήρηση.

Ναί. PostgreSQL αντιμετωπίζει το x IN (a, b, c) ως ισοδύναμο με το x = ANY (ARRAY[a, b, c]). Και τα δύο παράγουν το ίδιο αποτέλεσμα και συνήθως το ίδιο σχέδιο ερωτήματος.

Οι βοηθοί τεχνητής νοημοσύνης δημιουργούν ρήτρες IN από απλά αγγλικά, προτείνουν τη σωστή λίστα τιμών και επισημαίνουν κινδύνους NULL στο NOT IN. Επίσης, ξαναγράφουν αργά ερωτήματα και προσθέτουν υποδείξεις EXPLAIN για συντονισμό.

Ναι. Τα εργαλεία AI Copilot ανιχνεύουν επαναλαμβανόμενες συνθήκες OR σε μία στήλη και τις αναδιαμορφώνουν σε μία μόνο λίστα IN, βελτιώνοντας την αναγνωσιμότητα και μειώνοντας την πιθανότητα λογικών σφαλμάτων.

Ναι. Τοποθετήστε ένα SELECT μέσα στις παρενθέσεις: WHERE id IN (SELECT id FROM orders). Το εσωτερικό ερώτημα, που ονομάζεται υποερώτημα, παρέχει τη λίστα τιμών που ελέγχονται από το IN.

Για μεγάλους πίνακες, η συνάρτηση NOT EXISTS ή μια συνάρτηση LEFT JOIN με IS NULL συνήθως έχει καλύτερη απόδοση από την συνάρτηση NOT IN επειδή PostgreSQL δημιουργεί ένα αποτελεσματικό anti-join. Βεβαιωθείτε επίσης ότι οι συγκρινόμενες στήλες έχουν ευρετηριαστεί.

Συνοψίστε αυτήν την ανάρτηση με: