Papa Kuhikuhi ʻatikala
MySQLPehea e hana ai nā nīnau i ka ʻikepili pālua?Kānana no ka wehe ʻana i ka ʻōlelo ʻikepili pālua
MySQL Ka mālama ʻana i nā ʻikepili pālua
Loaʻa paha nā moʻolelo pālua i kekahi mau papa ʻikepili MySQL. I kekahi mau hihia, ʻae mākou i ke ʻano o ka ʻikepili pālua, akā i kekahi manawa pono mākou e holoi i kēia mau ʻikepili pālua.
Ma kēia mokuna, e hoʻolauna mākou pehea e pale ai i ka ʻikepili pālua i ka papa ʻikepili a pehea e holoi ai i ka ʻikepili pālua i ka papa ʻikepili.
Kāohi i ka ʻikepili pālua ma nā papa
Hiki iā ʻoe ke hoʻonohonoho i ke kahua i kuhikuhi ʻia i ka papa ʻikepili MySQL e like me KI KUMU a i ʻole UNIQUE (kūʻokoʻa) Index e hōʻoia i ke kūʻokoʻa o ka ʻikepili.
E ho'āʻo kākou i kekahi laʻana: ʻAʻohe mea kuhikuhi a me nā kī nui ma ka pākaukau ma lalo nei, no laila hiki i ka papa ʻaina ke ʻae i nā moʻolelo pālua.
CREATE TABLE person_tbl ( first_name CHAR(20), last_name CHAR(20), sex CHAR(10) );
Inā makemake ʻoe e hoʻonoho i nā kahua mua_name a me hope_name ma ka papaʻaina, ʻaʻole hiki ke hana hou ʻia ka ʻikepili, hiki iā ʻoe ke hoʻonohonoho i ke ʻano kī pālua ʻelua e hoʻonohonoho i ka ʻokoʻa o ka ʻikepili. ʻAʻole hiki ke NULL, akā hiki ke hoʻonohonoho iā NOT NULL.Penei:
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) );
Inā mākou e hoʻonoho i kahi kuhikuhi kūʻokoʻa, a laila i ka wā e hoʻokomo ai i ka ʻikepili pālua, ʻaʻole e hoʻokō pono ka ʻōlelo SQL a hoʻolei i kahi hewa.
ʻO ka ʻokoʻa ma waena o INSERT IGNORE INTO a me INSERT INTO, ʻo ia ka INSERT IGNORE e nānā ʻole i ka ʻikepili i loaʻa i loko o ka waihona.Ma kēiaʻano, hiki ke mālamaʻia nāʻikepili i loaʻa i loko o ka waihona, a hiki ke hoʻokōʻia ke kumu o ka hoʻokomoʻana i nāʻikepili i loko o ke āpau.
Ke hoʻohana nei kēia laʻana iā INSERT IGNORE INTO, e hana me ka hewa ʻole a ʻaʻole hoʻokomo i ka ʻikepili pālua i ka papa ʻikepili:
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 I ka hoʻokomo ʻana i ka ʻikepili, ma hope o ka hoʻonohonoho ʻana o ka ʻokoʻa o ka moʻolelo, inā hoʻokomo ʻia ka ʻikepili pālua, ʻaʻohe hewa e hoʻihoʻi ʻia, akā e hoʻihoʻi ʻia kahi ʻōlelo aʻo.A REPLACE INTO inā he moʻolelo kumu a kū hoʻokahi paha, e holoi mua iā ia.E hoʻokomo i kahi moʻolelo hou.
ʻO kahi ala ʻē aʻe e hoʻonohonoho i ka ʻokoʻa o kāu ʻikepili e hoʻohui i kahi index UNIQUE e like me kēia:
CREATE TABLE person_tbl ( first_name CHAR(20) NOT NULL, last_name CHAR(20) NOT NULL, sex CHAR(10) UNIQUE (last_name, first_name) );
Ka helu helu ʻikepili
Ma lalo e helu mākou i ka helu o nā moʻolelo pālua o ka inoa mua a me ka inoa hope ma ka papa:
mysql> SELECT COUNT(*) as repetitions, last_name, first_name -> FROM person_tbl -> GROUP BY last_name, first_name -> HAVING repetitions > 1;
E hoʻihoʻi ka ʻōlelo nīnau i luna i ka helu o nā moʻolelo pālua ma ka papa person_tbl.Ma keʻano laulā, no ka nīnau ʻana i nā waiwai pālua, e hana i kēia:
- E hoʻoholo i ke kolamu i loaʻa i nā waiwai ʻelua.
- E hoʻohana i ka COUNT(*) ma ke kolamu koho papa inoa e papa inoa i kēlā mau kolamu.
- Nā kolamu i helu ʻia ma ka paukū GROUP BY.
- Hoʻonohonoho ka pauku HAVING i ka helu o ka hana hou ʻana ma mua o 1.
kānana ʻikepili pālua
Inā pono ʻoe e heluhelu i ka ʻikepili kū hoʻokahi, hiki iā ʻoe ke hoʻohana i ka huaʻōlelo DISTINCT ma ka ʻōlelo SELECT e kānana i ka ʻikepili pālua.
mysql> SELECT DISTINCT last_name, first_name -> FROM person_tbl;
Hiki iā ʻoe ke hoʻohana iā GROUP BY e heluhelu i ka ʻikepili kūʻokoʻa mai kahi pākaukau:
mysql> SELECT last_name, first_name -> FROM person_tbl -> GROUP BY (last_name, first_name);
wehe i ka ʻikepili
Inā makemake ʻoe e holoi i ka ʻikepili pālua i ka papa ʻikepili, hiki iā ʻoe ke hoʻohana i kēia ʻōlelo 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;
ʻOiaʻiʻo, hiki iā ʻoe ke hoʻohui i ka INDEX (index) a me PRIMAY KEY (key primary) i ka papa ʻikepili no ka holoi ʻana i nā moʻolelo pālua ma ka papa.Nā hana e like me lalo:
mysql> ALTER IGNORE TABLE person_tbl -> ADD PRIMARY KEY (last_name, first_name);
Hope Chen Weiliang Blog ( https://www.chenweiliang.com/ ) kaʻana like "Pehea ka nīnau a MySQL a mālama i ka ʻikepili pālua?E kōkua iā ʻoe nā kānana a me ka wehe ʻana i nā ʻōlelo ".
Welina mai e kaʻana like i ka loulou o kēia ʻatikala:https://www.chenweiliang.com/cwl-499.html
Welina mai i ke kahawai Telegram o ka moʻomanaʻo ʻo Chen Weiliang e kiʻi i nā mea hou loa!
📚 He waiwai nui kēia alakaʻi, 🌟He manawa kakaikahi kēia, mai poina! ⏰⌛💨
Kaʻana like a like inā makemake ʻoe!
ʻO kāu kaʻana like a me kou makemake ʻo kā mākou hoʻoikaika mau!