როგორ ამუშავებს 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-ში, თუ არის ძირითადი ან უნიკალური ჩანაწერი, ჯერ წაშალეთ იგი.ჩადეთ ახალი ჩანაწერი.

თქვენი მონაცემების უნიკალურობის დაყენების კიდევ ერთი გზა არის UNIQUE ინდექსის დამატება, როგორიცაა:

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);

იმედი ჩენ ვეილიანგის ბლოგი ( https://www.chenweiliang.com/ ) გააზიარა „როგორ ითხოვს MySQL და ამუშავებს დუბლიკატულ მონაცემებს?განცხადებების გაფილტვრა და დუბლირება“ დაგეხმარებათ.

კეთილი იყოს თქვენი მობრძანება ამ სტატიის ბმულის გასაზიარებლად:https://www.chenweiliang.com/cwl-499.html

კეთილი იყოს თქვენი მობრძანება Chen Weiliang-ის ბლოგის ტელეგრამის არხზე, რომ მიიღოთ უახლესი განახლებები!

🔔 იყავით პირველი, ვინც მიიღეთ ღირებული "ChatGPT Content Marketing AI Tool Usage Guide" არხის ზედა დირექტორიაში! 🌟
📚 ეს სახელმძღვანელო შეიცავს უზარმაზარ ღირებულებას, 🌟ეს იშვიათი შესაძლებლობაა, არ გამოტოვოთ! ⏰⌛💨
გააზიარეთ და მოიწონეთ თუ მოგეწონათ!
თქვენი გაზიარება და მოწონებები ჩვენი უწყვეტი მოტივაციაა!

 

评论

თქვენი ელ.ფოსტის მისამართი არ გამოქვეყნდება. გამოყენებულია აუცილებელი ველები * ლეიბლი

გადახვევა ზევით