国产chinesehdxxxx野外,国产av无码专区亚洲av琪琪,播放男人添女人下边视频,成人国产精品一区二区免费看,chinese丰满人妻videos

MariaDB 管理重復(fù)

2022-08-16 15:34 更新

如前面的課程所討論的,MariaDB在某些情況下允許重復(fù)記錄和表。 由于不同的數(shù)據(jù)或?qū)ο箢愋?,或作為操作對象的唯一壽命或存儲的結(jié)果,這些重復(fù)中的一些事實上不是重復(fù)的。 這些副本通常也沒有問題。

在某些情況下,重復(fù)確實會導(dǎo)致問題,并且它們常常由于隱式動作或MariaDB命令的寬松策略而出現(xiàn)。 有多種方法可以控制此問題,查找重復(fù)項,刪除重復(fù)項,并防止重復(fù)創(chuàng)建。

策略和工具

有四個關(guān)鍵方法來管理重復(fù) - 

  • 使用JOIN關(guān)聯(lián),并用臨時表刪除他們

  • 使用INSERT ... ON DUPLICATE KEY UPDATE在發(fā)現(xiàn)重復(fù)時更新。

  • 使用DISTINCT修剪SELECT語句的結(jié)果并刪除重復(fù)的。

  • 使用INSERT IGNORE停止插入重復(fù)項。

使用連接臨時表

只需像內(nèi)部聯(lián)接那樣執(zhí)行半連接,然后刪除使用臨時表找到的重復(fù)。

使用INSERT

當(dāng)INSERT ... ON DUPLICATE KEY UPDATE發(fā)現(xiàn)重復(fù)的唯一或主鍵時,它執(zhí)行更新。 發(fā)現(xiàn)多個唯一鍵時,它只更新第一個。 因此,不要在具有多個唯一索引的表上使用它。

查看以下示例,該示例顯示在插入到填充字段時在包含索引值的表中發(fā)生的情況 -

INSERT INTO add_dupl VALUES (1,'Apple');
ERROR 1062 (23000): Duplicate entry '1' for key 'PRIMARY'

注意 - 如果沒有找到任何鍵,INSERT ... ON DUPLICATE KEY UPDATE語句的執(zhí)行方式與正常的insert語句相似。

使用DISTINCT

DISTINCT子句從結(jié)果中刪除重復(fù)項。 DISTINCT子句的一般語法如下 -

SELECT DISTINCT fields
FROM table
[WHERE conditions];

注 - 帶有DISTINCT子句的語句的結(jié)果 - 

  • 當(dāng)使用一個表達(dá)式時,它為它返回唯一的值。

  • 當(dāng)使用多個表達(dá)式時,它返回唯一的組合。

  • 它不會忽略NULL值; 因此,結(jié)果還包含NULL作為唯一值。

使用單個表達(dá)式的DISTINCT子句查看以下語句 -

SELECT DISTINCT product_id
FROM products
WHERE product_name = 'DustBlaster 5000';

使用多個表達(dá)式查看以下示例 -

SELECT DISTINCT product_name, product_id
FROM products
WHERE product_id < 30

使用INSERT IGNORE

INSERT IGNORE語句指示MariaDB在發(fā)現(xiàn)重復(fù)記錄時取消插入。 查看下面給出的使用示例 -

mysql> INSERT IGNORE INTO customer_tbl (LN, FN)
   VALUES( 'Lex', 'Luther');

另外,注意重復(fù)的邏輯。 某些表基于表數(shù)據(jù)的性質(zhì)需要重復(fù)。 滿足您在管理重復(fù)記錄的策略中的需要。


以上內(nèi)容是否對您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號
微信公眾號

編程獅公眾號