SQLYOG - SQL - 将两列合并为一列

时间:2015-07-06 20:18:11

标签: mysql sql

我有两列显示相同类型的信息但不一定是相同的数据。虽然每列重叠的某些数据可能/可能不包含也包含NULL值的信息。像这样:

Company ID | Company Name | Company ID | Company Name
-----------+--------------+------------+-------------
1          | A            | 1          | A
2          | B            | NULL       | NULL
NULL       | NULL         | 3          | C

我正在尝试将第1列和第2列分别合并到第3列和第4列,这样我就有两列看起来像这样:

Company ID | Company Name
-----------+-------------
1          | A 
2          | B   
3          | C

看看类似的stackoverflow问题,我怀疑这可能很容易做到。这可能吗?请让我知道!

一切都有帮助。

1 个答案:

答案 0 :(得分:1)

由于您现在似乎无法回答问题需要澄清,所以让我们继续吧。
看来,实际上你确实在一个表中有四个列 - 但是,应该没有重复的列名。一旦它们是唯一的,以下应该有效:

UPDATE SomeTable
  SET company_ID_1 = IFNULL(company_ID_1, company_ID_2)
  , company_Name_1 = IFNULL(company_Name_1, company_Name_2)
WHERE
  company_ID_1 IS NULL
  OR
  company_Name_1 IS NULL
;

如果呈现的实际上是连接的输出,则可以通过以下方式替换它:

SELECT
  IFNULL(SomeTable1.company_ID, SomeTable2.company_ID) company_ID
  , IFNULL(SomeTable1.company_Name, SomeTable2.company_Name) company_Name
FROM SomeTable1
LEFT JOIN SomeTable2
  ON SomeTable1.company_ID = SomeTable2.company_ID
UNION ALL
SELECT
  IFNULL(SomeTable1.company_ID, SomeTable2.company_ID) company_ID
  , IFNULL(SomeTable1.company_Name, SomeTable2.company_Name) company_Name
FROM SomeTable1
RIGHT JOIN SomeTable2
  ON SomeTable1.company_ID = SomeTable2.company_ID
WHERE SomeTable1.company_ID IS NULL
ORDER BY company_ID
;

查看实际操作:SQL Fiddle

如果需要调整/进一步详细说明,请发表评论。