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

合并列以创建新记录-mysql查询,mysql,join,merge,multiple-columns,Mysql,Join,Merge,Multiple Columns,我有一个mysql数据库,我需要将两列合并在一起,但是我需要以这样一种方式合并这些列,使它们不仅连接在一起,而是一个全新的单独记录 例如: Before Merge: name Computer-one Computer-two jack hp dell <insert unkown sql statement (what I need)> After Merge name Computer-one jack

我有一个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


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

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

你可以这么做

INSERT INTO table_name(name, Computer-one)
SELECT 
   name, Computer-two
FROM 
   table_name;
然后,您将为所有行创建新行,并在“计算机一”字段中输入两个值。 当您看到表中的行数是原来的两倍,并且Computer one字段是正确的时,您只需删除“Computer two”列,即可获得所需的数据


始终先进行备份或尝试测试表,这样您就知道一切都是先开始的。

我认为您只需要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;

因此,您需要在此表上执行两个查询并合并结果。将结果插入临时表。然后为列“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

你想如何识别“杰克”?这是动态的还是要传递给查询的参数?您需要的解决方案是分别查询计算机1和计算机2个属于name@JuliusA此数据库中可能有多个不同的名称,因此可能是动态的。对于记录来说,创建一个新表并像这样合并它们也是一个可以接受的答案。
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