我想从两个表中选择某些列,并创建一个连接到第三个表

Posted

技术标签:

【中文标题】我想从两个表中选择某些列,并创建一个连接到第三个表【英文标题】:I want to select certain columns from two tables, and create a join into a third table 【发布时间】:2019-09-10 20:17:18 【问题描述】:

我有两个表 f_com 和 d_summary,我从这两个表中选择了下面的字段,并希望将键上的表连接到第三个表中。

    Create table temp.merge

    Select D_AH_MH_SUMMARY_KEY, MID_KEY, CHID_KEY, ACTIVITY_DT,
     SPONSOR_STATE, RESPONSE_TYPE, IS_CURRENT from f_com 

    Select d_ah_mh_summary_key, activity_name, activity_type, 
    activity_dt from d_summary 
    Join on f_com.D_AH_MH_SUMMARY_KEY = d_summary.d_ah_mh_summary_key
    group by D_AH_MH_SUMMARY_KEY, MID_KEY, CHID_KEY, ACTIVITY_DT,
    SPONSOR_STATE, RESPONSE_TYPE, IS_CURRENT, activity_name, activity_type, activity_dt

期望合并表 temp.merge 与从两个表中选择的字段,合并到 f_com.D_AH_MH_SUMMARY_KEY = d_summary.d_ah_mh_summary_key

【问题讨论】:

第一个问题是WHY? 除非这是存储过程中的临时表,否则您将面临维护噩梦。话虽如此,您的查询格式不正确。有很多问题。例如,GROUP BY 子句不是必需的,因为您没有聚合值。 GROUP BYSUM(column)COUNT(column) 等函数一起使用。 @daShier:是的,它是一个临时表。 【参考方案1】:

同样使用CREATE TABLE ... SELECT Syntax 语句。

CREATE TABLE temp_merge AS
SELECT 
    f_com.D_AH_MH_SUMMARY_KEY AS f_com_D_AH_MH_SUMMARY_KEY, 
    f_com.MID_KEY, 
    f_com.CHID_KEY, 
    f_com.ACTIVITY_DT AS f_com_ACTIVITY_DT,
    f_com.SPONSOR_STATE, 
    f_com.RESPONSE_TYPE, 
    f_com.IS_CURRENT
    d_summary.d_ah_mh_summary_key, 
    d_summary.activity_name, 
    d_summary.activity_type, 
    d_summary.activity_dt
FROM f_com 
JOIN ON d_summary ON f_com.D_AH_MH_SUMMARY_KEY = d_summary.d_ah_mh_summary_key
GROUP BY f_com.D_AH_MH_SUMMARY_KEY, MID_KEY, CHID_KEY, ACTIVITY_DT,
 SPONSOR_STATE, RESPONSE_TYPE, IS_CURRENT, activity_name, activity_type, activity_dt

注意:如评论中所述,如果您不需要 GROUP BY 子句,只需将其删除。

【讨论】:

以上是关于我想从两个表中选择某些列,并创建一个连接到第三个表的主要内容,如果未能解决你的问题,请参考以下文章

将两个表中的列相加到具有两列的第三个表中

SQL - 如何从一个表中获取重复记录并连接到另一张表

如何选择具有优先级第一个表的不同 UNION

从表和参考表中选择列、count(id)

如何将带有前缀列的表连接到 PHP MySQL 或 Laravel 中的另外两个表

连接来自两个不同表的两列