MySQL query သည် ထပ်နေသောဒေတာကို မည်သို့ကိုင်တွယ်သနည်း။ပွားနေသောဒေတာထုတ်ပြန်ချက်ကို ဖယ်ရှားရန် စစ်ထုတ်ပါ။

က MySQLမိတ္တူပွားနေသောဒေတာကို စုံစမ်းမေးမြန်းမှုများကို မည်သို့ကိုင်တွယ်ဖြေရှင်းမည်နည်း။ပွားနေသောဒေတာထုတ်ပြန်ချက်ကို ဖယ်ရှားရန် စစ်ထုတ်ပါ။

က MySQL ပွားနေသောဒေတာကို ကိုင်တွယ်ခြင်း။

အချို့သော MySQL ဒေတာဇယားများတွင် မိတ္တူကူးထားသော မှတ်တမ်းများ ရှိနိုင်ပါသည်။ အချို့ကိစ္စများတွင် ကျွန်ုပ်တို့သည် ဒေတာပွားနေခြင်းကို ခွင့်ပြုသော်လည်း တစ်ခါတစ်ရံတွင် ဤပွားနေသောဒေတာကိုလည်း ဖျက်ရန် လိုအပ်ပါသည်။

ဤအခန်းတွင်၊ ဒေတာဇယားရှိ ဒေတာပွားခြင်းကို တားဆီးနည်းနှင့် ဒေတာဇယားရှိ ထပ်နေသောဒေတာကို ဖျက်နည်းကို မိတ်ဆက်ပေးပါမည်။


ဇယားများတွင် ဒေတာပွားခြင်းကို တားဆီးပါ။

MySQL ဒေတာဇယားတွင် သတ်မှတ်ထားသောအကွက်ကို သင်သတ်မှတ်နိုင်သည်။ အဓိကသော့ ဒါမှမဟုတ် UNIQUE (ထူးခြားသော) အချက်အလက်များ၏ ထူးခြားမှုကို သေချာစေရန် အညွှန်း။

ဥပမာတစ်ခုကို စမ်းကြည့်ရအောင်- အောက်ပါဇယားတွင် အညွှန်းများနှင့် အဓိကသော့များ မပါရှိသောကြောင့် ဇယားသည် ပွားနေသော မှတ်တမ်းများစွာကို ခွင့်ပြုပါသည်။

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)

ဒေတာထည့်သွင်းရာတွင် လျစ်လျူရှုခြင်းသို့ ထည့်သွင်းပါ မှတ်တမ်း၏ထူးခြားမှုကို သတ်မှတ်ပြီးနောက်၊ ထပ်တူဒေတာကို ထည့်သွင်းပါက အမှားအယွင်းမရှိ ပြန်ဖြစ်လာမည်မဟုတ်သော်လည်း သတိပေးချက်တစ်ခုသာ ပြန်ပေးမည်ဖြစ်သည်။ပြီးလျှင် မူလ သို့မဟုတ် ထူးခြားသော မှတ်တမ်းရှိလျှင် ၎င်းကို ဦးစွာဖျက်ပါ။မှတ်တမ်းအသစ်တစ်ခုထည့်ပါ။

သင့်ဒေတာ၏ ထူးခြားမှုကို သတ်မှတ်ရန် အခြားနည်းလမ်းမှာ ဤကဲ့သို့သော 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)
);

ကိန်းဂဏန်းအချက်အလက်များ ပွားနေသည်။

အောက်တွင် ကျွန်ုပ်တို့သည် ဇယားရှိ first_name နှင့် last_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 ထက်ပို၍ ထပ်ခါထပ်ခါ အရေအတွက်ကို သတ်မှတ်သည်။

ပွားနေသောဒေတာကို စစ်ထုတ်ပါ။

တစ်မူထူးခြားသောဒေတာကို ဖတ်ရန် လိုအပ်ပါက၊ ပွားနေသောဒေတာကို စစ်ထုတ်ရန် SELECT ထုတ်ပြန်ချက်တွင် DISTINCT သော့ချက်စာလုံးကို သင်သုံးနိုင်သည်။

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

မျှော်လင့်ခြင်း Chen Weiliang ဘလော့ဂ် ( https://www.chenweiliang.com/ ) shared "MySQL query and duplicate data တွေကို ဘယ်လိုကိုင်တွယ်မလဲ။Filtering နှင့် Deduplication Statements" သည် သင့်အား ကူညီပေးပါမည်။

ဤဆောင်းပါး၏ link ကိုမျှဝေရန်ကြိုဆိုပါတယ်:https://www.chenweiliang.com/cwl-499.html

နောက်ဆုံးထွက်မွမ်းမံမှုများကို ရယူရန် Chen Weiliang ၏ တယ်လီဂရမ်ချန်နယ်မှ ကြိုဆိုပါသည်။

🔔 ချန်နယ်ထိပ်တန်းလမ်းညွှန်တွင် တန်ဖိုးရှိသော "ChatGPT အကြောင်းအရာစျေးကွက်ရှာဖွေရေး AI ကိရိယာအသုံးပြုမှုလမ်းညွှန်" ကို ပထမဆုံးရရှိသူဖြစ်လိုက်ပါ။ 🌟
📚 ဤလမ်းညွှန်တွင် တန်ဖိုးကြီးကြီးမားမားပါရှိသည်၊ 🌟ဒါက ရှားပါးအခွင့်အရေးပါ၊ လက်လွတ်မခံပါနဲ့။ ⏰⌛💨
ကြိုက်ရင် Share ပြီး Like လုပ်ပါ။
သင်၏မျှဝေခြင်းနှင့် လိုက်ခ်များသည် ကျွန်ုပ်တို့၏ စဉ်ဆက်မပြတ်လှုံ့ဆော်မှုဖြစ်သည်။

 

မှတ်ချက်များ

သင့်ရဲ့အီးမေးလ်လိပ်စာကိုထုတ်ဝေမည်မဟုတ် 用项已用用 * တံဆိပ်

အပေါ်မှလှိမ့်