![](/img/trans.png)
[英]MySQL - Join two tables, different columns in table 1 on the same column in table 2
[英]MySQL join tables and use two different records from joined table in two different columns of main table
我正在嘗試創建新表new_data
,其中將存儲來自兩個不同表的廣告系列的數據。 我有表- campaign_revenue
與一列data_date
指示......數據日期,另一列revenue
。 在另一個表- campaign_manager
我有列revenue
和revenue_yesterday
。 所以我想是加入兩個表,並把revenue
和revenue_yesterday
從campaign_revenue
到new_data
。 結果表中的新記錄應類似於:
campaign_id | campaign_name | revenue | revenue_yesterday
43243242 | testing name | 109.02 | 159.43
這里我們看到的實際上是兩個記錄campaign_revenue
並為每個日期和活動編號和名字從campaign_manager
。 我一直在嘗試很少的變化,但是基於此答案,我最后的嘗試是:
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
自我加入似乎是您的初衷。 您可以兩次加入campaign_revenue
表,一次加入今天的收入,一次加入昨天的收入。
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關鍵字的查詢。
供參考:您可以轉到“ UNION語法 ”
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.