合并列以创建新记录 - 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
我有一个 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