DISTINCT σε PostgreSQL: Επιλογή, Παραγγελία Ανά & Περιορισμός (Παραδείγματα)

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

DISTINCT σε PostgreSQL Χρησιμοποιείται με μια πρόταση SELECT για την αφαίρεση διπλότυπων γραμμών και την επιστροφή μόνο μοναδικών τιμών. Καλύπτει τη σύνταξη SELECT, το SQL Shell και το pgAdmin, τη συνάρτηση DISTINCT σε μία και πολλαπλές στήλες, και τη συνάρτηση DISTINCT έναντι της συνάρτησης GROUP BY.

  • 🔎 ΕΠΙΛΕΓΩ: Ανάκτηση στηλών από έναν πίνακα με SELECT στήλη FROM πίνακα.
  • 🧹 ΔΙΑΚΡΙΤΗ: Καταργήστε τις διπλότυπες γραμμές και διατηρήστε μία γραμμή ανά μοναδική τιμή.
  • ↕️ ΤΑΞΙΝΟΜΗΣΗ ΚΑΤΑ: Ταξινόμηση αύξουσα από προεπιλογή ή φθίνουσα με DESC.
  • 🔢 ΟΡΙΟ: Περιορίστε τον αριθμό των εγγραφών που επιστρέφει το ερώτημα.
  • Εργαλεία: Εκτελέστε τα ίδια ερωτήματα στο SQL Shell ή στο pgAdmin.

DISTINCT σε PostgreSQL

Μπορείτε να ανακτήσετε δεδομένα από τον πίνακα χρησιμοποιώντας μια δήλωση SELECT.

Σύνταξη:

SELECT [column names] FROM [table_name]

Εδώ,

  • ονόματα στηλών: Όνομα των στηλών των οποίων την τιμή θέλετε να ανακτήσετε.
  • ΑΠΟ: Η ρήτρα FROM ορίζει έναν ή περισσότερους πίνακες πηγαίου κώδικα για το SELECT.
  • table_name: Το όνομα ενός υπάρχοντος πίνακα στον οποίο θέλετε να υποβάλετε ερώτημα.

Τι είναι ΔΙΑΦΟΡΕΤΙΚΟ στο PostgreSQL?

The ΔΙΑΦΟΡΕΤΙΚΕΣ ρήτρα σε PostgreSQL χρησιμοποιείται με μια πρόταση SELECT για την αφαίρεση διπλότυπων γραμμών από το σύνολο αποτελεσμάτων. Όταν μια στήλη περιέχει επαναλαμβανόμενες τιμές, η συνάρτηση SELECT DISTINCT επιστρέφει μόνο τις μοναδικές τιμές, διατηρώνταςping μία μόνο γραμμή για κάθε ομάδα διπλότυπων. Αυτό είναι χρήσιμο όταν θέλετε μια λίστα με ξεχωριστές καταχωρίσεις, όπως μοναδικές πόλεις πελατών ή κατηγορίες προϊόντων, χωρίς επανάληψη.

Η συνάρτηση DISTINCT αξιολογεί όλες τις στήλες που αναφέρονται στην πρόταση SELECT για να αποφασίσει εάν μια γραμμή είναι μοναδική. PostgreSQL Παρέχει επίσης την συνάρτηση DISTINCT ON, η οποία επιστρέφει την πρώτη γραμμή για κάθε διακριτή τιμή μιας καθορισμένης παράστασης. Μπορείτε να συνδυάσετε την συνάρτηση DISTINCT με την συνάρτηση ORDER BY για να ελέγξετε ποιες γραμμές εμφανίζονται και με την συνάρτηση LIMIT για να περιορίσετε τον αριθμό των αποτελεσμάτων.

PostgreSQL Επιλέξτε Statement στο SQL Shell

Βήμα 1) Έχουμε έναν πίνακα με τίτλο "tutorials" (σεμινάρια) με 2 στήλες, "id" (αναγνωριστικό) και "tutorial_name" (όνομα_σεμιναρίου). Ας υποβάλουμε ένα ερώτημα σε αυτόν. Χρησιμοποιήστε το ακόλουθο ερώτημα για να παραθέσετε δεδομένα στον πίνακα:

SELECT id,tutorial_name FROM tutorials;

PostgreSQL Επιλέξτε Statement στο SQL Shell

ΣΗΜΕΊΩΣΗ: Χρησιμοποιήστε την εντολή \c για να συνδεθείτε στη βάση δεδομένων που περιέχει τον πίνακα στον οποίο θέλετε να υποβάλετε ερώτημα. Στην περίπτωσή μας, είμαστε συνδεδεμένοι με τον guru99 της βάσης δεδομένων.

Βήμα 2) Αν θέλετε να δείτε όλες τις στήλες σε έναν συγκεκριμένο πίνακα, μπορούμε να χρησιμοποιήσουμε τον χαρακτήρα μπαλαντέρ με αστερίσκο (*). Αυτό σημαίνει ότι ελέγχει κάθε πιθανότητα και, ως αποτέλεσμα, θα επιστρέψει κάθε στήλη.

SELECT * FROM tutorials;

PostgreSQL Επιλέξτε Statement στο SQL Shell

Εμφανίζει όλες τις εγγραφές του πίνακα εκμάθησης.

Βήμα 3) Μπορείτε να χρησιμοποιήσετε τον όρο ORDER για να ταξινομήσετε δεδομένα σε έναν πίνακα με βάση μια συγκεκριμένη στήλη. Η ρήτρα ORDER οργανώνει τα δεδομένα με σειρά Α έως Ω.

SELECT * FROM tutorials ORDER BY id;

PostgreSQL Επιλέξτε Statement στο SQL Shell

Μπορείτε να ταξινομήσετε από το Ω στο Α χρησιμοποιώντας το "DESC" μετά τη δήλωση "ORDER BY".

SELECT * FROM tutorials ORDER BY id DESC;

PostgreSQL Επιλέξτε Statement στο SQL Shell

Βήμα 4) Το SELECT DISTINCT στο PostgreSQL Ο όρος μπορεί να χρησιμοποιηθεί για την αφαίρεση διπλών σειρών από το αποτέλεσμα. Διατηρεί μία σειρά για κάθε ομάδα διπλότυπων.

Syntax:
SELECT DISTINCT column_1 FROM table_name;

Ας υποβάλουμε ερώτημα για την επιλογή τιμών Distinct id από τα εκπαιδευτικά μας σεμινάρια στον πίνακα Postgres χρησιμοποιώντας distinct queries στο PostgreSQL:

SELECT DISTINCT(id) FROM tutorials;

PostgreSQL Επιλέξτε Statement στο SQL Shell

Βήμα 5) Μπορείτε να χρησιμοποιήσετε το PostgreSQL Όρος LIMIT για τον περιορισμό του αριθμού των εγγραφών που επιστρέφονται από το ερώτημα SELECT.

SELECT * FROM tutorials LIMIT 4;

PostgreSQL Επιλέξτε Statement στο SQL Shell

PostgreSQL Επιλογή Δήλωσης στο pgAdmin

Βήμα 1) Στο Δέντρο Αντικειμένων:

  1. Κάντε δεξί κλικ στον Πίνακα.
  2. Επιλέξτε Σενάρια.
  3. Κάντε κλικ στην επιλογή ΕΠΙΛΟΓΗ ΣΕΝΑΡΙΟΥ.

PostgreSQL Επιλογή Δήλωσης στο pgAdmin

Βήμα 2) Στον πίνακα στα δεξιά:

  1. Επεξεργαστείτε το ερώτημα SELECT εάν απαιτείται.
  2. Κάντε κλικ στο εικονίδιο Lightning.
  3. Παρατηρήστε την έξοδο.

PostgreSQL Επιλογή Δήλωσης στο pgAdmin

DISTINCT σε πολλαπλές στήλες

Η ρήτρα SELECT DISTINCT μπορεί επίσης να εφαρμοστεί σε περισσότερες από μία στήλες. Όταν παραθέτετε πολλές στήλες μετά τη συνάρτηση DISTINCT, PostgreSQL αντιμετωπίζει τον συνδυασμό αυτών των στηλών ως μονάδα και αφαιρεί γραμμές όπου ολόκληρος ο συνδυασμός είναι διπλότυπος.

Syntax:
SELECT DISTINCT column_1, column_2 FROM table_name;

Για παράδειγμα, για να επιστρέψετε τους μοναδικούς συνδυασμούς των tutorial_name και id από τον πίνακα tutorials:

SELECT DISTINCT tutorial_name, id FROM tutorials;

Σε αυτήν την περίπτωση, μια γραμμή καταργείται μόνο όταν τόσο το tutorial_name όσο και το id ταιριάζουν με μια άλλη γραμμή. Εάν δύο γραμμές μοιράζονται το ίδιο tutorial_name αλλά έχουν διαφορετικές τιμές id, και οι δύο διατηρούνται, επειδή ο συνδυασμός εξακολουθεί να είναι μοναδικός. Αυτή η συμπεριφορά είναι σημαντικό να θυμάστε: Το DISTINCT δεν καταργεί τα διπλότυπα μιας μόνο στήλης όταν επιλέγονται πολλές στήλες. Καταργεί τα διπλότυπα ολόκληρου του συνόλου των επιλεγμένων στηλών μαζί.

DISTINCT έναντι GROUP BY στο PostgreSQL

Τόσο η συνάρτηση DISTINCT όσο και η συνάρτηση GROUP BY μπορούν να καταργήσουν διπλότυπες τιμές, αλλά εξυπηρετούν διαφορετικούς σκοπούς:

  • ΔΙΑΦΟΡΕΤΙΚΕΣ απλώς επιστρέφει μοναδικές γραμμές από το αποτέλεσμα και είναι καλύτερο όταν χρειάζεστε μόνο μια λίστα χωρίς διπλότυπα.
  • GROUP BY ομαδοποιεί γραμμές που μοιράζονται μια τιμή, ώστε να μπορείτε να εφαρμόσετε συναρτήσεις συγκέντρωσης όπως COUNT, SUM ή AVG σε κάθε ομάδα.

Για παράδειγμα, τα δύο παρακάτω ερωτήματα επιστρέφουν και τα δύο τις μοναδικές τιμές id:

SELECT DISTINCT id FROM tutorials;
SELECT id FROM tutorials GROUP BY id;

Χρησιμοποιήστε τη συνάρτηση DISTINCT για μια απλή λίστα μοναδικών τιμών και χρησιμοποιήστε τη συνάρτηση GROUP BY όταν χρειάζεστε επίσης έναν υπολογισμό ανά ομάδα, όπως η μέτρηση του αριθμού των tutorials που μοιράζονται κάθε αναγνωριστικό. Σε απλά ερωτήματα, ο σχεδιαστής συχνά παράγει παρόμοια απόδοση και για τα δύο, αλλά η συνάρτηση GROUP BY απαιτείται κάθε φορά που εμπλέκεται η συνάθροιση.

Cheat Sheet

SELECT [column names] FROM [table_name] [clause]

Εδώ είναι οι διάφορες παράμετροι:

  • ονόματα στηλών: Όνομα των στηλών των οποίων την τιμή θέλετε να ανακτήσετε.
  • ΑΠΟ: Η ρήτρα FROM ορίζει έναν ή περισσότερους πίνακες πηγαίου κώδικα για το SELECT.
  • table_name: Το όνομα ενός υπάρχοντος πίνακα στον οποίο θέλετε να υποβάλετε ερώτημα.

Διάφορες ρήτρες είναι:

Εντολές Περιγραφή
* Ανακτά εγγραφές για όλες τις γραμμές στον πίνακα.
ΔΙΑΦΟΡΕΤΙΚΕΣ DISTINCT σε PostgreSQL σας βοηθά να αφαιρέσετε διπλότυπα από το αποτέλεσμα.
ΤΑΞΙΝΟΜΗΣΗ ΚΑΤΑ Ταξινομεί γραμμές με βάση μια στήλη. Η προεπιλεγμένη σειρά ταξινόμησης είναι αύξουσα. Χρησιμοποιήστε τη λέξη-κλειδί DESC για ταξινόμηση σε φθίνουσα σειρά.
LIMIT LIMIT σε PostgreSQL περιορίζει τον αριθμό των εγγραφών που επιστρέφονται από το ερώτημα.

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

Ναι. Οι βοηθοί τεχνητής νοημοσύνης μπορούν να μετατρέψουν μια περιγραφή σε προτάσεις SELECT DISTINCT, να προσθέσουν ORDER BY ή LIMIT και να εξηγήσουν το αποτέλεσμα. Θα πρέπει να δοκιμάσετε το ερώτημα στο σχήμα σας πριν το εκτελέσετε στην παραγωγή.

Ναι. Τα εργαλεία τεχνητής νοημοσύνης μπορούν να διαβάσουν το σχέδιο ερωτήματος από την εντολή EXPLAIN ANALYZE και να προτείνουν ευρετήρια ή να ξαναγράψουν το DISTINCT ως GROUP BY. Επικυρώστε πάντα τις προτάσεις με πραγματικά δεδομένα, καθώς η απόδοση εξαρτάται από το μέγεθος του πίνακα και τα ευρετήρια.

Η συνάρτηση DISTINCT καταργεί τις διπλότυπες γραμμές σε όλες τις επιλεγμένες στήλες. Η συνάρτηση DISTINCT ON (έκφραση) διατηρεί την πρώτη γραμμή για κάθε ξεχωριστή τιμή αυτής της έκφρασης, επιτρέποντάς σας να επιλέξετε μία γραμμή ανά ομάδα, συνήθως σε συνδυασμό με την συνάρτηση ORDER BY.

Η DISTINCT μπορεί να είναι πιο αργή σε μεγάλους πίνακες επειδή πρέπει να συγκρίνει και να αφαιρέσει διπλότυπα, συχνά χρησιμοποιώντας μια ταξινόμηση ή ένα hash. Τα κατάλληλα ευρετήρια και ο περιορισμός των στηλών που επιλέγετε βοηθούν στη μείωση του κόστους της.

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