MySQL联接表,并在主表的两个不同列中使用联接表中的两个不同记录
我正在尝试创建一个新表-MySQL联接表,并在主表的两个不同列中使用联接表中的两个不同记录,mysql,Mysql,我正在尝试创建一个新表-new\u data,其中我将存储来自两个不同表的活动数据 . 我有一个表-campaign\u revenue,表中有一列data\u date表示……数据日期,另一列是revenue。 在另一个表中-campaign\u manager我有revenue和revenue\u treaty两列。因此,我想将这两个表连接起来,并将收入和昨天的收入从活动收入导入新数据。 结果表中的新记录应如下所示: 活动标识|活动名称|收入|收入|昨天 43243242 |测试名称| 1
new\u data
,其中我将存储来自两个不同表的活动数据
. 我有一个表-campaign\u revenue
,表中有一列data\u date
表示……数据日期,另一列是revenue
。
在另一个表中-campaign\u manager
我有revenue
和revenue\u treaty
两列。因此,我想将这两个表连接起来,并将收入
和昨天的收入
从活动收入
导入新数据
。
结果表中的新记录应如下所示:
活动标识|活动名称|收入|收入|昨天
43243242 |测试名称| 109.02 | 159.43
其中我们看到的实际上是来自
活动收入的两条记录,以及来自活动经理的每个日期、活动id和名称的两条记录。
我尝试了很多变化,但基于此
我最后一次尝试是:
SELECT campaign_id, campaign_name
FROM campaign_manager
UNION
SELECT
revenue
FROM campaign_revenue
WHERE data_date = '2018-02-13'
UNION
SELECT
revenue AS revenue_yesterday
FROM campaign_revenue
WHERE data_date = '2018-02-12'
它显然不起作用,但我希望它有助于理解我试图实现的目标…thx您的想法似乎就是自我加入。您可以两次加入活动收入
表,一次加入今天的收入,一次加入昨天的收入
SELECT
cm.campaign_id,
cm.campaign_name,
cr1.data_date,
cr1.revenue AS revenue_today,
cr2.revenue AS revenue_yesterday
FROM campaign_manager cm
INNER JOIN campaign_revenue cr1
ON cm.campaign_id = cr1.campaign_id
LEFT JOIN campaign_revenue cr2
ON cm.campaign_id = cr2.campaign_id AND
cr1.data_date = DATE_ADD(cr2.data_date, INTERVAL 1 DAY)
-- WHERE cr1.data_date = CURDATE()
这个答案假设您的日期是连续的,也就是说,没有丢失的日期。自连接似乎就是您想要的。您可以两次加入活动收入
表,一次加入今天的收入,一次加入昨天的收入
SELECT
cm.campaign_id,
cm.campaign_name,
cr1.data_date,
cr1.revenue AS revenue_today,
cr2.revenue AS revenue_yesterday
FROM campaign_manager cm
INNER JOIN campaign_revenue cr1
ON cm.campaign_id = cr1.campaign_id
LEFT JOIN campaign_revenue cr2
ON cm.campaign_id = cr2.campaign_id AND
cr1.data_date = DATE_ADD(cr2.data_date, INTERVAL 1 DAY)
-- WHERE cr1.data_date = CURDATE()
此答案假设您的日期是连续的,即没有丢失的日期。尝试以下查询:
SELECT campaign_id, campaign_name FROM campaign_manager WHERE data_date IN ('2018-02-13', '2018-01-14', '2017-02-15')
UNION
SELECT title FROM data_table WHERE title IN ('2018-02-13', '2018-01-14')
您需要使用两个带有union关键字的查询
供参考:您可以转到“”尝试以下查询:
SELECT campaign_id, campaign_name FROM campaign_manager WHERE data_date IN ('2018-02-13', '2018-01-14', '2017-02-15')
UNION
SELECT title FROM data_table WHERE title IN ('2018-02-13', '2018-01-14')
您需要使用两个带有union关键字的查询
参考:您可以转到“”您忘记在第一个join子句中选择今天的日期:和cr1。data_date='2018-02-13
@mice我不清楚OP想要的是今天,还是多个日期。事实上。但是,最好将数据日期添加到选择
子句中,以避免答案中有几行无法区分的日期。您忘记了在第一个连接子句中选择今天的日期:和cr1.data\u date='2018-02-13
@mice我不清楚OP是否需要今天,或者多次约会。但是,最好将数据日期添加到SELECT
子句中,以避免答案中有几行不可区分的日期。