如何联接两个具有不同ID的表?

时间:2019-04-08 07:02:18

标签: mysql sql

对不起,问题的标题有点令人困惑,但我只是找不到简单的方法来总结问题。让我们从一个例子开始。

有一个产品A,我必须监视A的两个特征X和Y。X每天生成一次,而Y每月生成一次。为了节省存储空间,我决定将X,Y放入两个表,即表X和表Y。 因此表X有两列:date和X;表Y有两列:日期和Y。但是,两个表中的日期具有不同的频率。我想让X上的两个表保持连接,但是我需要Y的缺失值来填充上个月的观察结果。

表X为:

date                 X
----------      -------------
2019-01-01           1
2019-01-02           2
2019-01-02           3    
   ...              ...
2019-02-01           32
2019-02-02           33

表Y为:

date                 Y
----------      -------------
2019-01-01           0
2019-02-01           1

我要查询的表是:

date                 X              Y
----------      -------------   ----------
2019-01-01           1              0
2019-01-02           2              0
2019-01-02           3              0
   ...              ...            ...
2019-01-31           31             0
2019-02-01           32             1
2019-02-02           33             1

表X:

Table X

表Y:

Table Y

我要查询的表:

Table I want to query

3 个答案:

答案 0 :(得分:1)

类似这样的东西:

SELECT x.date,
       x.x,
       y.y
FROM   x
JOIN   y
  ON   YEAR(x.date) = YEAR(y.date)
 AND   MONTH(x.date) = MONTH(y.date);

答案 1 :(得分:0)

右连接和ORDER BY应该这样做

SELECT x.date, x.X, y.Y
FROM X x
RIGHT JOIN Y y ON YEAR(x.date) = YEAR(y.date) AND MONTH(x.date) = MONTH(y.date)
ORDER BY x.date ASC

答案 2 :(得分:-2)

SELECT 
a.Column1, 
a.column2, 
b.column3
FROM tablename LEFT JOIN anothertable b
ON a.column1 = b.column2;