合并列以创建新记录 - mysql 查询

Merge columns to create new records - mysql query

我有一个 mysql 数据库,我需要将两列合并在一起,但是我需要以这样一种方式合并这些列,即它们不仅仅是连接在一起,而是一个全新的单独记录。

示例:

Before Merge:
name    Computer-one     Computer-two
jack       hp                  dell

<insert unkown sql statement (what I need)>

After Merge
name    Computer-one
jack       hp               
jack       dell

当我尝试合并两列时,它们只是合并成一个列,而不是重复记录(看上面):

name    Computer-one     
jack       hpdell

目前我正在使用concat语句。这是我能够合并项目的唯一方法。这些列可以包含空值,有一个主键自动递增的ID。

问题是您实际上并不想合并它们。 您想要为字段创建新行。

你可以这样做。

INSERT INTO table_name(name, Computer-one)
SELECT 
   name, Computer-two
FROM 
   table_name;

然后,您将为所有行创建新行,将计算机两个值放入计算机一个字段。 当您看到 table 的行数是原来的两倍并且 Computer-one 字段正确时,您只需删除 'Computer-two' 列,数据就会如您所愿。

始终先进行备份或尝试测试-tables 以便您知道一切都先工作。

我认为您只需要 UNION ALL 语句。您可以尝试以下 -

SELECT name, "Computer-one"
  FROM YOUR_TABLE
 WHERE "Computer-one" IS NOT NULL
 UNION ALL
SELECT name, "Computer-two"
  FROM YOUR_TABLE
 WHERE "Computer-two" IS NOT NULL;

因此您需要对此 table 进行两次查询并将结果合并。将结果插入临时 table。然后 select 列 'nane'

的每条记录的不同记录
SELECT INTO table2(name, model)
SELECT A.name, A.computer-one AS model from table as A
UNION
SELECT B.name, B.computer-two AS model from table as B