将多个select语句值插入单个列?

时间:2017-02-15 08:50:09

标签: mysql select

我有一个包含多个存储名称列的旧表,这些名称可能会在整个表中重复多次。我想选择每个列中的所有名称,丢弃重复的名称,然后将它们插入到新表中。

现在我一次只能做一个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

2 个答案:

答案 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