我有一个包含多个存储名称列的旧表,这些名称可能会在整个表中重复多次。我想选择每个列中的所有名称,丢弃重复的名称,然后将它们插入到新表中。
现在我一次只能做一个select语句,并且DISTINCT函数不会在每个select语句之间进行,所以我最终得到了重复的名字。我正在使用MySQL。
INSERT INTO new_table (name)
SELECT DISTINCT old_table.name
FROM old_table
WHERE blah blah blah
INSERT INTO new_table (name)
SELECT DISTINCT old_table.name2
FROM old_table
WHERE blah blah blah
答案 0 :(得分:0)
您可以先创建一个临时表并将名称插入表中,然后从临时表中尝试选择DISTINCT。
创建临时表:
create temporary table dummy (name text);
执行所有插入操作:
INSERT INTO dummy (name)
SELECT DISTINCT old_table.name
FROM old_table
WHERE blah blah blah;
最后
INSERT into new_table(name)
select distinct dummy.name
from dummy;
答案 1 :(得分:0)
使用UNION子句执行它,它将区分所有重复的值 -
SELECT name FROM old_table
UNION
SELECT name2 FROM old_table
UNION
SELECT name3 FROM old_table
将其应用于INSERT ... SELECT查询 -
INSERT INTO new_table(name)
SELECT name FROM old_table
UNION
SELECT name2 FROM old_table
UNION
SELECT name3 FROM old_table