PostgreSQL Union, Union ALL με παραδείγματα

Τι είναι η Ένωση PostgreSQL;

Ο τελεστής PostgreSQL UNION χρησιμοποιείται για το συνδυασμό συνόλων αποτελεσμάτων από περισσότερες από μία δηλώσεις SELECT σε ένα σύνολο αποτελεσμάτων. Τυχόν διπλές σειρές από τα αποτελέσματα των δηλώσεων SELECT καταργούνται. Ο χειριστής της UNION λειτουργεί υπό δύο προϋποθέσεις:

  • Τα ερωτήματα SELECT ΠΡΕΠΕΙ να επιστρέψουν παρόμοιο αριθμό ερωτημάτων.
  • Οι τύποι δεδομένων όλων των αντίστοιχων στηλών πρέπει να είναι συμβατοί.

Ο χειριστής της UNION χρησιμοποιείται συνήθως για να συνδυάζει δεδομένα από σχετικούς πίνακες που δεν έχουν κανονικοποιηθεί τέλεια.

Σε αυτό το σεμινάριο PostgreSQL, θα μάθετε:

  • Τι είναι η Ένωση PostgreSQL;
  • Σύνταξη
  • Ενωση
  • Ένωση Όλα
  • ΤΑΞΙΝΟΜΗΣΗ ΚΑΤΑ
  • Πότε να χρησιμοποιήσετε το Union και πότε να χρησιμοποιήσετε το Union all;
  • Χρήση του pgAdmin

Σύνταξη

SELECT expression_1, expression_2,… expression_nFROM tables[WHERE condition(s)]UNIONSELECT expression_1, expression_2,… expression_nFROM tables[WHERE condition(s)];

Ακολουθεί μια εξήγηση για τις παραπάνω παραμέτρους:

Οι εκφράσεις_1, έκφραση_2,… έκφραση_n είναι οι υπολογισμοί ή οι στήλες που πρέπει να ανακτήσετε.

Οι πίνακες είναι οι πίνακες από τους οποίους πρέπει να ανακτήσετε εγγραφές.

Οι συνθήκες WHERE είναι οι προϋποθέσεις που πρέπει να πληρούνται για την ανάκτηση εγγραφών.

Σημείωση: ότι επειδή ο χειριστής της UNION δεν επιστρέφει διπλότυπα, η χρήση του UNION DISTINCT δεν θα έχει αντίκτυπο στα αποτελέσματα.

Ενωση

Ο τελεστής UNION αφαιρεί διπλότυπα. Ας το αποδείξουμε αυτό.

Έχουμε μια βάση δεδομένων με το όνομα Demo με τους ακόλουθους πίνακες:

Βιβλίο:

Τιμή:

Ας εκτελέσουμε την ακόλουθη εντολή:

SELECT idFROM BookUNIONSELECT idFROM Price;

Η εντολή θα επιστρέψει τα εξής:

Η στήλη id εμφανίζεται τόσο στους πίνακες Βιβλίο όσο και στους Τιμούς Ωστόσο, εμφανίζεται μόνο μία φορά στο αποτέλεσμα. Ο λόγος είναι ότι ο τελεστής PostgreSQL UNION δεν επιστρέφει διπλότυπα.

Ένωση Όλα

Αυτός ο τελεστής συνδυάζει σύνολα αποτελεσμάτων από περισσότερες από μία δηλώσεις SELECT χωρίς να αφαιρεί διπλότυπα. Ο χειριστής απαιτεί κάθε πρόταση SELECT να έχει παρόμοιο αριθμό πεδίων σε σύνολα αποτελεσμάτων παρόμοιων τύπων δεδομένων.

Σύνταξη:

SELECT expression_1, expression_2,… expression_nFROM tables[WHERE condition(s)]UNION ALLSELECT expression_1, expression_2,… expression_nFROM tables[WHERE condition(s)];

Ακολουθεί μια εξήγηση για τις παραπάνω παραμέτρους:

Οι εκφράσεις_1, έκφραση_2,… έκφραση_n είναι οι υπολογισμοί ή οι στήλες που πρέπει να ανακτήσετε.

Οι πίνακες είναι οι πίνακες από τους οποίους πρέπει να ανακτήσετε εγγραφές.

Οι συνθήκες WHERE είναι οι προϋποθέσεις που πρέπει να πληρούνται για την ανάκτηση εγγραφών.

Σημείωση: Και οι δύο εκφράσεις πρέπει να έχουν ίσο αριθμό εκφράσεων.

Θα χρησιμοποιήσουμε τους παρακάτω πίνακες:

Βιβλίο:

Τιμή:

Εκτελέστε την ακόλουθη εντολή:

SELECT idFROM BookUNION ALLSELECT idFROM price;

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

Τα αντίγραφα δεν έχουν καταργηθεί.

ΤΑΞΙΝΟΜΗΣΗ ΚΑΤΑ

Ο τελεστής PostgreSQL UNION μπορεί να χρησιμοποιηθεί μαζί με τον όρο ORDER BY για να παραγγείλετε τα αποτελέσματα του ερωτήματος. Για να το αποδείξουμε αυτό, θα χρησιμοποιήσουμε τους παρακάτω πίνακες:

Τιμή:

Τιμή2:

Εδώ είναι η εντολή που δείχνει πώς να χρησιμοποιήσετε τον τελεστή UNION μαζί με τον όρο ORDER BY:

SELECT *FROM PriceUNIONSELECT *FROM Price2ORDER BY price;

Η εντολή θα επιστρέψει τα εξής:

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

SELECT *FROM PriceUNIONSELECT *FROM Price2ORDER BY price DESC;

Η εντολή θα επιστρέψει τα εξής:

Οι εγγραφές έχουν παραγγελθεί με βάση τη στήλη τιμών σε φθίνουσα σειρά.

Πότε να χρησιμοποιήσετε το Union και πότε να χρησιμοποιήσετε το Union all;

Χρησιμοποιήστε τον τελεστή UNION όταν έχετε πολλούς πίνακες με παρόμοια δομή αλλά χωρίστε για έναν λόγο. Είναι καλό όταν πρέπει να αφαιρέσετε / εξαλείψετε διπλές εγγραφές.

Χρησιμοποιήστε τον τελεστή UNION ALL όταν δεν χρειάζεται να αφαιρέσετε / εξαλείψετε διπλές εγγραφές.

Χρήση του pgAdmin

Τώρα ας δούμε πώς και οι τρεις ενέργειες εκτελέστηκαν χρησιμοποιώντας το pgAdmin.

Ενωση

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

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

Βήμα 2)

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

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

SELECT *FROM PriceUNIONSELECT *FROM Price2ORDER BY price DESC;

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

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

Ένωση Όλα

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

Βήμα 2)

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

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

SELECT idFROM BookUNION ALLSELECT idFROM price;

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

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

ΤΑΞΙΝΟΜΗΣΗ ΚΑΤΑ

Ο τελεστής UNION ALL μπορεί να συνδυαστεί με τον όρο ORDER BY για να παραγγείλετε αποτελέσματα στο σύνολο αποτελεσμάτων. Για παράδειγμα:

SELECT idFROM BookUNION ALLSELECT idFROM priceORDER BY id;

Η εντολή θα επιστρέψει τα εξής:

Τα αποτελέσματα έχουν παραγγελθεί.

Περίληψη:

  • Ο τελεστής PostgreSQL UNION συνδυάζει αποτελέσματα από περισσότερες από μία δηλώσεις SELECT σε ένα σύνολο αποτελεσμάτων.
  • Ο τελεστής UNION δεν επιστρέφει διπλές εγγραφές.
  • Για να παραγγείλετε τα αποτελέσματα, συνδυάστε το με τον όρο ORDER BY.
  • Ο τελεστής UNION ALL συνδυάζει αποτελέσματα από περισσότερες από μία δηλώσεις SELECT σε ένα σύνολο αποτελεσμάτων.
  • Ο τελεστής UNION ALL δεν αφαιρεί διπλότυπα.

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

ενδιαφέροντα άρθρα...