Πώς χειρίζεται το ερώτημα MySQL τα διπλά δεδομένα;Φιλτράρετε για να αφαιρέσετε τη διπλότυπη δήλωση δεδομένων

MySQLΠώς χειρίζονται τα ερωτήματα διπλότυπα δεδομένα;Φιλτράρετε για να αφαιρέσετε τη διπλότυπη δήλωση δεδομένων

MySQL Χειρισμός διπλών δεδομένων

Ενδέχεται να υπάρχουν διπλότυπες εγγραφές σε ορισμένους πίνακες δεδομένων MySQL. Σε ορισμένες περιπτώσεις, επιτρέπουμε την ύπαρξη διπλότυπων δεδομένων, αλλά μερικές φορές χρειάζεται επίσης να διαγράψουμε αυτά τα διπλότυπα δεδομένα.

Σε αυτό το κεφάλαιο, θα εισαγάγουμε πώς να αποτρέψετε τα διπλά δεδομένα στον πίνακα δεδομένων και πώς να διαγράψετε τα διπλά δεδομένα στον πίνακα δεδομένων.


Αποτρέψτε τα διπλά δεδομένα σε πίνακες

Μπορείτε να ορίσετε το καθορισμένο πεδίο στον πίνακα δεδομένων MySQL ως ΠΡΩΤΕΥΩΝ ΚΛΕΙΔΙ ή ΜΟΝΑΔΙΚΟ (μοναδικό) Ευρετήριο για τη διασφάλιση της μοναδικότητας των δεδομένων.

Ας δοκιμάσουμε ένα παράδειγμα: Δεν υπάρχουν ευρετήρια και κύρια κλειδιά στον παρακάτω πίνακα, επομένως ο πίνακας επιτρέπει πολλαπλές διπλότυπες εγγραφές.

CREATE TABLE person_tbl
(
    first_name CHAR(20),
    last_name CHAR(20),
    sex CHAR(10)
);

Εάν θέλετε να ορίσετε τα πεδία first_name και last_name στον πίνακα, τα δεδομένα δεν μπορούν να επαναληφθούν, μπορείτε να ορίσετε τη λειτουργία διπλού πρωτεύοντος κλειδιού για να ορίσετε τη μοναδικότητα των δεδομένων. Εάν ορίσετε το διπλό πρωτεύον κλειδί, η προεπιλεγμένη τιμή αυτού του κλειδιού δεν μπορεί να είναι NULL, αλλά μπορεί να οριστεί σε NOT NULL.Ως εξής:

CREATE TABLE person_tbl
(
   first_name CHAR(20) NOT NULL,
   last_name CHAR(20) NOT NULL,
   sex CHAR(10),
   PRIMARY KEY (last_name, first_name)
);

Εάν ορίσουμε ένα μοναδικό ευρετήριο, τότε κατά την εισαγωγή διπλότυπων δεδομένων, η εντολή SQL θα αποτύχει να εκτελεστεί με επιτυχία και θα εμφανιστεί σφάλμα.

Η διαφορά μεταξύ INSERT IGNORE INTO και INSERT INTO είναι ότι το INSERT IGNORE αγνοεί τα δεδομένα που υπάρχουν ήδη στη βάση δεδομένων. Εάν δεν υπάρχουν δεδομένα στη βάση δεδομένων, θα εισαγάγει νέα δεδομένα και εάν υπάρχουν δεδομένα, θα παραλείψει αυτά τα δεδομένα.Με αυτόν τον τρόπο, τα υπάρχοντα δεδομένα στη βάση δεδομένων μπορούν να διατηρηθούν και ο σκοπός της εισαγωγής δεδομένων στο κενό μπορεί να επιτευχθεί.

Το παρακάτω παράδειγμα χρησιμοποιεί το INSERT IGNORE INTO, το οποίο εκτελείται χωρίς σφάλμα και δεν εισάγει διπλά δεδομένα στον πίνακα δεδομένων:

mysql> INSERT IGNORE INTO person_tbl (last_name, first_name)
    -> VALUES( 'Jay', 'Thomas');
Query OK, 1 row affected (0.00 sec)
mysql> INSERT IGNORE INTO person_tbl (last_name, first_name)
    -> VALUES( 'Jay', 'Thomas');
Query OK, 0 rows affected (0.00 sec)

INSERT IGNORE INTO Κατά την εισαγωγή δεδομένων, αφού οριστεί η μοναδικότητα της εγγραφής, εάν εισαχθούν διπλά δεδομένα, δεν θα επιστραφεί κανένα σφάλμα, αλλά θα επιστραφεί μόνο μια προειδοποίηση.Και REPLACE INTO σε εάν υπάρχει μια κύρια ή μοναδική εγγραφή, διαγράψτε την πρώτα.Εισαγάγετε μια νέα εγγραφή.

Ένας άλλος τρόπος για να ορίσετε τη μοναδικότητα των δεδομένων σας είναι να προσθέσετε ένα ΜΟΝΑΔΙΚΟ ευρετήριο όπως αυτό:

CREATE TABLE person_tbl
(
   first_name CHAR(20) NOT NULL,
   last_name CHAR(20) NOT NULL,
   sex CHAR(10)
   UNIQUE (last_name, first_name)
);

Στατιστικά διπλά δεδομένα

Παρακάτω θα μετρήσουμε τον αριθμό των διπλότυπων εγγραφών του ονόματος και του επωνύμου στον πίνακα:

mysql> SELECT COUNT(*) as repetitions, last_name, first_name
    -> FROM person_tbl
    -> GROUP BY last_name, first_name
    -> HAVING repetitions > 1;

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

  • Προσδιορίστε ποια στήλη περιέχει πιθανές διπλότυπες τιμές.
  • Χρησιμοποιήστε το COUNT(*) στη λίστα επιλογής στηλών για να παραθέσετε αυτές τις στήλες.
  • Στήλες που παρατίθενται στην ρήτρα GROUP BY.
  • Η ρήτρα HAVING ορίζει τον αριθμό των επαναλήψεων μεγαλύτερο από 1.

φιλτράρετε διπλά δεδομένα

Εάν χρειάζεται να διαβάσετε μοναδικά δεδομένα, μπορείτε να χρησιμοποιήσετε τη λέξη-κλειδί DISTINCT στη δήλωση SELECT για να φιλτράρετε διπλότυπα δεδομένα.

mysql> SELECT DISTINCT last_name, first_name
    -> FROM person_tbl;

Μπορείτε επίσης να χρησιμοποιήσετε GROUP BY για να διαβάσετε μοναδικά δεδομένα από έναν πίνακα:

mysql> SELECT last_name, first_name
    -> FROM person_tbl
    -> GROUP BY (last_name, first_name);

μη διπλότυπα δεδομένα

Εάν θέλετε να διαγράψετε διπλότυπα δεδομένα στον πίνακα δεδομένων, μπορείτε να χρησιμοποιήσετε την ακόλουθη πρόταση SQL:

mysql> CREATE TABLE tmp SELECT last_name, first_name, sex
    ->                  FROM person_tbl;
    ->                  GROUP BY (last_name, first_name, sex);
mysql> DROP TABLE person_tbl;
mysql> ALTER TABLE tmp RENAME TO person_tbl;

Φυσικά, μπορείτε επίσης να προσθέσετε INDEX (ευρετήριο) και PRIMAY KEY (πρωτεύον κλειδί) στον πίνακα δεδομένων για να διαγράψετε διπλές εγγραφές στον πίνακα.Μέθοδοι όπως παρακάτω:

mysql> ALTER IGNORE TABLE person_tbl
    -> ADD PRIMARY KEY (last_name, first_name);

Ιστολόγιο Hope Chen Weiliang ( https://www.chenweiliang.com/ ) shared "Πώς η MySQL ερωτά και χειρίζεται τα διπλά δεδομένα;Δηλώσεις φιλτραρίσματος και αντιγραφής» θα σας βοηθήσει.

Καλώς ήρθατε να μοιραστείτε τον σύνδεσμο αυτού του άρθρου:https://www.chenweiliang.com/cwl-499.html

Καλώς ήρθατε στο κανάλι Telegram του ιστολογίου του Chen Weiliang για να λαμβάνετε τις τελευταίες ενημερώσεις!

🔔 Γίνετε ο πρώτος που θα αποκτήσει τον πολύτιμο "Οδηγό χρήσης εργαλείου τεχνητής νοημοσύνης μάρκετινγκ περιεχομένου ChatGPT" στον κορυφαίο κατάλογο του καναλιού! 🌟
📚 Αυτός ο οδηγός περιέχει τεράστια αξία, 🌟Αυτή είναι μια σπάνια ευκαιρία, μην τη χάσετε! ⏰⌛💨
Κοινοποιήστε και κάντε like αν σας αρέσει!
Η κοινή χρήση και τα like σας είναι το συνεχές μας κίνητρο!

 

发表 评论

Η διεύθυνση email σας δεν θα δημοσιευθεί. 必填 项 已 用 * 标注

κύλιση στην κορυφή