色婷婷狠狠18禁久久YY,CHINESE性内射高清国产,国产女人18毛片水真多1,国产AV在线观看

mysql去掉表中重復數據

黃文隆2年前9瀏覽0評論

在MYSQL中,如果想要去掉一個表中的重復數據,可以使用DISTINCT關鍵字,但是這種方法并不能真正地去掉重復的數據,只能將重復的數據以唯一的形式顯示出來。如果要完全去掉表中的重復數據,需要使用DELETE和GROUP BY語句。

DELETE FROM 表名 WHERE 主鍵 NOT IN
(SELECT MIN(主鍵) FROM 表名 GROUP BY 列名);

以上的代碼可以保留每個重復數據中最小的主鍵,而將其他相同的數據從表中刪除。

例如,我們有一個名為“employees”的表,其中包含員工的姓名(name)和郵箱地址(email)?,F在有一個問題,因為某些原因,其中有一些員工出現了重復的條目,怎么辦?

CREATE TABLE employees (
id INT AUTO_INCREMENT PRIMARY KEY,
name VARCHAR(255) NOT NULL,
email VARCHAR(255) NOT NULL
);
INSERT INTO employees (name, email) VALUES
('John Doe', 'john.doe@example.com'),
('Jane Doe', 'jane.doe@example.com'),
('William Smith', 'william.smith@example.com'),
('John Doe', 'j.doe@example.com'),
('William Smith', 'wsmith@example.com'),
('Jane Doe', 'janedoe@example.com');

現在,如果我們想要去掉表中的重復數據,可以使用以下代碼:

DELETE FROM employees WHERE id NOT IN (
SELECT min_id FROM (
SELECT MIN(id) AS min_id FROM employees GROUP BY name, email
) AS x
);

該語句首先使用GROUP BY語句將重復的數據分組,然后使用INNER JOIN找到最小的主鍵(id),并且使用DELETE語句刪除了其余的重復數據?,F在,我們有一個不包含重復數據的完整“employees”表。