MySQL是一個主流的關(guān)系型數(shù)據(jù)庫管理系統(tǒng),被廣泛應(yīng)用于各種Web應(yīng)用程序的后端。在實際開發(fā)過程中,有時需要將多張表中的重復(fù)數(shù)據(jù)去掉,以減少存儲空間和提高查詢效率。
假設(shè)有三張表,分別為table1、table2和table3:
CREATE TABLE table1 ( id INT NOT NULL AUTO_INCREMENT, name VARCHAR(20) NOT NULL, PRIMARY KEY (id) ); CREATE TABLE table2 ( id INT NOT NULL AUTO_INCREMENT, name VARCHAR(20) NOT NULL, PRIMARY KEY (id) ); CREATE TABLE table3 ( id INT NOT NULL AUTO_INCREMENT, name VARCHAR(20) NOT NULL, PRIMARY KEY (id) );
現(xiàn)在要將三張表中所有的重復(fù)數(shù)據(jù)去掉,只保留不重復(fù)的數(shù)據(jù)。可以使用UNION和DISTINCT聯(lián)合起來實現(xiàn):
SELECT DISTINCT name FROM ( SELECT name FROM table1 UNION ALL SELECT name FROM table2 UNION ALL SELECT name FROM table3 ) t;
以上代碼會將三張表中的所有name字段合并起來,然后去掉重復(fù)的數(shù)據(jù),最后返回一個不含重復(fù)name字段的結(jié)果集。
如果需要將去重后的結(jié)果存儲到一個新表中,可以使用CREATE TABLE AS語句進(jìn)行插入:
CREATE TABLE new_table AS SELECT DISTINCT name FROM ( SELECT name FROM table1 UNION ALL SELECT name FROM table2 UNION ALL SELECT name FROM table3 );
以上代碼會將去重后的數(shù)據(jù)插入到一個名為new_table的新表中,該表只包含name字段。
綜上所述,使用UNION和DISTINCT聯(lián)合查詢可以方便地從多張表中去除重復(fù)數(shù)據(jù)。在實際開發(fā)中,可以根據(jù)具體業(yè)務(wù)需求進(jìn)行調(diào)整和優(yōu)化,以獲得更好的性能和效果。
上一篇mysql3張表怎么連接
下一篇html css表格嵌套