如何将2个表同名行加入一列

Posted

技术标签:

【中文标题】如何将2个表同名行加入一列【英文标题】:How to join 2 table same name rows into a column 【发布时间】:2022-01-01 11:07:35 【问题描述】:

也许这个问题已经在其他地方得到解答,但我不知道如何在我的工作项目中应用该查询,而且我是使用 mysql 的初学者(新手)。

我的 phpMyAdmin 中有 2 个表。

table-1 看起来像这样:

table-2 看起来像这样

通过使用以下查询,我可以将两个表连接在一起,但列名不同。

SELECT DISTINCT `a`.`subject`,`b`.`subject`, `a`.`date`, `a`.`start_time`, `a`.`end_time`, `b`.`date`, `b`.`start_time`, `b`.`end_time` 
from `time-table` as a 
inner join `oral_time-table` as b on a.oral_token=b.token and a.class='EIGHTH' and a.medium='English' and a.faculty='GENERAL' and a.exam='Half-Yearly'

以下查询结果如下:

我希望两个表中的两个数据 date 名称列都按升序排列。因此,我需要一张一张地加入这两个表。 只有一个共同的列名,两个表行都被连接起来。我怎样才能做到这一点,并提前感谢...

期望的结果:

date 列升序。

【问题讨论】:

抱歉,您试图实现的目标不是很清楚。请在此处发布所需的结果 看起来像枢轴。不支持。根据使用动态 SQL 的存储过程创建。 您可以使用UNION 获得所需的结果。 SELECT subject, date, start_time, end_time from table-1 UNION SELECT subject, date, start_time, end_time FROM table-2 谢谢你,但如果你也写关于如何从UNION 加入我的数据的查询,我很高兴。这对我很有帮助 不要使用date 作为任何列名,因为它是保留关键字,不是一个好的做法。 【参考方案1】:

您可以使用UNION 达到预期的效果。

SELECT subject, `date`, start_time,
                      end_time
FROM TABLE-1
UNION
SELECT subject, `date`, start_time,
                      end_time
FROM TABLE-2
ORDER BY `date` ASC

不要使用日期作为任何列名,因为它是保留关键字并且是 不是一个好习惯。

【讨论】:

为“日期”列添加了反引号,因为日期是保留词,请参阅:dev.mysql.com/doc/refman/8.0/en/… 但我无法在日期列中添加排序规则 我创建了上述SQL语句的DBFIDDLE。当您说“我无法在日期列中添加排序规则”时,您能否提供更多信息?

以上是关于如何将2个表同名行加入一列的主要内容,如果未能解决你的问题,请参考以下文章

如何将 excel 索引匹配转换为 Access - 加入 4 个表

Pyspark:用同名的另一列替换行值

加入具有重复行数据的表时如何获得正确的 SUM()?

如何在2个表之间加入新表?

如何重命名与另一列同名的列

如何使用转换后的 UUID 字段加入 2 个表?