欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

MySQL中處理各種重復(fù)的一些方法

 更新時間:2015年05月27日 10:30:22   投稿:goldensun  
這篇文章主要介紹了MySQL中處理各種重復(fù)的一些方法,包括對表和查詢結(jié)果的重復(fù)的一些處理,需要的朋友可以參考下

有時表或結(jié)果集包含重復(fù)的記錄。有時它是允許的,但有時它需要停止重復(fù)的記錄。有時它需要識別重復(fù)的記錄從表中刪除。本章將介紹如何防止發(fā)生在一個表中重復(fù)的記錄如何刪除已經(jīng)存在的重復(fù)記錄。
防止重復(fù)表中的發(fā)生:

可以使用PRIMARY KEY或UNIQUE索引的表上相應(yīng)的字段來防止重復(fù)的記錄。讓我們舉一個例子,下面的表中不包含這樣的索引或主鍵,所以它會允許記錄first_name和last_name重復(fù)

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

可以使用PRIMARY KEY或UNIQUE索引的表上相應(yīng)的字段防止重復(fù)的記錄。讓我們舉一個例子,下面的表中不包含這樣的索引或主鍵,所以它會允許重復(fù)first_name和last_name記錄

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

表中的唯一索引的存在通常會導(dǎo)致錯誤的發(fā)生,如果表中插入一條記錄,重復(fù)定義索引的列或列中的現(xiàn)有記錄。
使用INSERT IGNORE而不是INSERT。如果記錄不重復(fù)現(xiàn)有的記錄,MySQL將插入它像往常一樣。如果記錄是重復(fù)IGNORE關(guān)鍵字告訴MySQL靜靜地拋棄它,而不會產(chǎn)生錯誤。

下面的示例中沒有錯誤,同時也不會插入重復(fù)的記錄。

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。如果記錄是新的它INSERT插入。如果它是一個重復(fù)的,新的記錄將取代舊的:

mysql> REPLACE INTO person_tbl (last_name, first_name)
  -> VALUES( 'Ajay', 'Kumar');
Query OK, 1 row affected (0.00 sec)
mysql> REPLACE INTO person_tbl (last_name, first_name)
  -> VALUES( 'Ajay', 'Kumar');
Query OK, 2 rows affected (0.00 sec)

使用REPLACE而不是INSERT。如果記錄是新的它INSERT插入。如果它是一個重復(fù)的,新的記錄將取代舊的:

強制唯一性的另一種方法是添加一個UNIQUE索引,而不是一個PRIMARY KEY表。

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

計算和確定重復(fù):

以下是查詢數(shù)first_name和last_name表中的重復(fù)記錄。

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

這個查詢將返回一個列表的所有person_tbl表中重復(fù)的記錄。在一般情況下,識別重復(fù)的值,請執(zhí)行以下操作:

  •     確定哪一列包含的值可能會重復(fù)。
  •     在列選擇列表中隨著COUNT(*)列出的那些列。
  •     以及在GROUP BY子句中列出的列。
  •     新增的HAVING子句消除了獨特的值要求的組數(shù)大于1。

消除重復(fù)查詢結(jié)果:

可以使用DISTINCT與SELECT語句一起找出表中唯一的紀錄。

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

DISTINCT是添加一個GROUP BY子句中命名的列,選擇的另一種方法。這具有除去重復(fù)和只選擇的獨特的組合中的指定的列的值的效果:

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

刪除重復(fù)使用表更換:

如果在一個表中有重復(fù)的記錄,想從該表中刪除所有的重復(fù)記錄,看看下面程序的例子。

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

從一個表中刪除重復(fù)記錄的一個簡單的方法是添加KEY,表索引或PRIMAY。如果該表已經(jīng)是可用的,那么使用此方法刪除重復(fù)的記錄。

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


相關(guān)文章

  • mysql出現(xiàn)提示錯誤10061的解決方法

    mysql出現(xiàn)提示錯誤10061的解決方法

    這篇文章主要為大家詳細介紹了mysql出現(xiàn)提示錯誤10061的解決方法,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2017-10-10
  • java連不上mysql8.0問題的解決方法

    java連不上mysql8.0問題的解決方法

    這篇文章主要為大家詳細介紹了java連不上MySQL8.0問題的解決方法,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2019-06-06
  • mysql開啟binlog步驟講解

    mysql開啟binlog步驟講解

    在本文里我們給大家分享了關(guān)于mysql開啟binlog的方法和相關(guān)知識點,對此有需要的朋友們跟著學(xué)習(xí)下。
    2019-03-03
  • Mysql表,列,庫增刪改查問題小結(jié)

    Mysql表,列,庫增刪改查問題小結(jié)

    下面是我總結(jié)的一些基礎(chǔ)的sql知識,方便以后使用,需要的朋友參考可以參考下
    2017-07-07
  • MySQL中常用的字段截取和字符串截取方法

    MySQL中常用的字段截取和字符串截取方法

    在 MySQL 數(shù)據(jù)庫中,有時我們需要截取字段或字符串的一部分進行查詢、展示或處理,本文將介紹 MySQL 中常用的字段截取和字符串截取方法,幫助你靈活處理數(shù)據(jù),需要的朋友可以參考下
    2024-01-01
  • MySQL中的引號和反引號的區(qū)別與用法詳解

    MySQL中的引號和反引號的區(qū)別與用法詳解

    這個問題是我在學(xué)習(xí)數(shù)據(jù)庫的時候遇到的一個問題,我當時并不能理解下圖中的一些情況,后來我也請教了一位大佬給我解答,最后在大佬和度娘的幫助下我大概理解了這個反引號的東西
    2021-10-10
  • MySQL binlog_ignore_db 參數(shù)的具體使用

    MySQL binlog_ignore_db 參數(shù)的具體使用

    這篇文章主要介紹了MySQL binlog_ignore_db 參數(shù)的具體作用,幫助大家更好的理解和使用MySQL數(shù)據(jù)庫,感興趣的朋友可以了解下
    2020-12-12
  • MySQL中的max()函數(shù)使用教程

    MySQL中的max()函數(shù)使用教程

    這篇文章主要介紹了MySQL中的max()函數(shù)使用教程,是學(xué)習(xí)MySQL入門的基礎(chǔ)知識,需要的朋友可以參考下
    2015-05-05
  • mysql執(zhí)行計劃介紹

    mysql執(zhí)行計劃介紹

    下面我簡單講講mysql的執(zhí)行計劃,只列出了一些常見的情況,希望對大家有所幫助
    2013-11-11
  • 關(guān)于mysql合并表的詳細介紹

    關(guān)于mysql合并表的詳細介紹

    本篇文章是對mysql中的合并表進行了詳細的分析介紹,需要的朋友參考下
    2013-06-06

最新評論