【问题标题】:How do i merge a table columns data into another table columns data SQL如何将表列数据合并到另一个表列数据 SQL
【发布时间】:2013-12-13 14:01:03
【问题描述】:

我有 2 个 SQL 表,每个表都有一个代表名称的列...名称、FName。

我想以编程方式选择 Table1 中的所有名称和 Table2 中的所有名称,并查看它们,就好像它们都在一个名为 Name 的列中一样。

到目前为止,我有这个,它不是我所期望的。

SELECT
    t1.FName AND t2.Name as Name
FROM 
    Table1 t1, Table2 t2

想象一下

【问题讨论】:

  • 根据您使用的 RDBMS,您可以轻松地使用连接运算符,从而连接两列以选择/显示为一列。 Oracle 使用 || 而 MySQL 和 SQL Server 允许使用 + 作为连接运算符。你可以简单地SELECT t1.fname + ' ' + t2.fname AS name...

标签: sql sql-server merge union ms-access-2013


【解决方案1】:

在 MySQL 和 SQL Server 中:

SELECT CONCAT(t1.FName, ' ', t2.Name) AS FullName
FROM Table1 t1, Table2 t2

在 MS Access 中,您将执行以下操作:

SELECT t1.FName & ' ' & t2.Name AS FullName
FROM Table1 t1, Table2 t2

如果您希望所有行都包含在 on 字段中,那么您确实需要 GROUP_CONCAT 函数。但是,Microsoft Access 中没有GROUP_CONCAT。您可能必须使用一些 VBA 来完成此任务。看看:Concatenate records and GROUP BY in Access.

编辑:

现在您的更新要求完全不同。如果您想要上述结果,以下将为您提供没有任何重复的结果:

SELECT t1.FName AS [Name]
FROM Table1 AS t1
UNION
SELECT t2.Name as [Name]
FROM Table2 AS t2

但是,如果 t1t2 有相同的记录并且您不希望将它们组合在一起,那么您会想要使用:

SELECT t1.FName AS [Name]
FROM Table1 AS t1
UNION ALL
SELECT t2.Name as [Name]
FROM Table2 AS t2

【讨论】:

  • 不幸的是,CONCAT 在 Access 中抛出了一个错误......任何想法为什么......它确实在 SQL 视图中显示我。我也不想将它们连接到单元格中,我只想将 1 中的列表和另一个列表中的列表合并为同一事物的一个长列表
  • 您的最后一次编辑进行了连接,但不幸的是,我不希望我的列将“data1 data2”作为行条目。我只想在一次查看中列出所有这些列列
  • 请记住,CONCAT 只能与 SQL Server 2012 一起使用
  • 我想我不想连接任何东西?我只是想在两个表上都做一个 Select * 然后返回数据,就好像它是 1 列中的 1 个表
  • 欢迎您,记住UNIONUNION ALL 可能会产生两种不同的结果。
【解决方案2】:

根据您添加到问题中的图像,您似乎想要这两个表中的一列唯一名称,而不涉及串联。您可以通过 UNION 查询获得。

SELECT
    t1.Name AS [Name]
FROM 
    Table1 AS t1
UNION
SELECT
    t2.FName as [Name]
FROM 
    Table2 AS t2

【讨论】:

  • 叮叮叮,我们赢了。干杯哥们.. UNION,我会记住的:D
猜你喜欢
  • 1970-01-01
  • 2015-01-28
  • 2020-12-13
  • 1970-01-01
  • 2011-07-30
  • 2020-11-03
  • 1970-01-01
  • 2017-10-21
  • 2016-09-22
相关资源
最近更新 更多