将mysql表列与另一个表上的单元格进行比较

时间:2019-02-21 14:52:53

标签: mysql

我有一个要从中获取数据的表,这取决于另一个表上的另一个单元格。

主要:

 .. | d1 | d2 | d3 | time1 
----+----+----+----+-----
 .. | 1  | 12 | .. | 2019-02-20 21:20:55
 .. | 3  | 2  | .. | 2019-02-20 21:24:00
 .. | 1  | 5  | .. | 2019-02-21 15:57:14
 .. | 15 | 12 | .. | 2019-02-21 16:15:12

中学:

 .. | .. | .. | .. | time2
----+----+----+----+-----
 .. | .. | .. | .. | 2019-02-20 20:39:55
 .. | .. | .. | .. | 2019-02-20 21:14:00
 .. | .. | .. | .. | 2019-02-21 13:56:14
 .. | .. | .. | .. | 2019-02-21 15:52:22

我希望能够获取time1大于time2的最后一个单元格的每一行的d1和d2之和

我已经写了一条语句,其中将time1与现在进行比较(用于获取时间),但是无法将其与time2的最后一个单元进行比较。

SELECT SUM(d1),SUM(d2) FROM main WHERE time1 >= now;

2 个答案:

答案 0 :(得分:0)

SELECT SUM(d1),SUM(d2) FROM main WHERE time1 >= (select max(time2) from table2);

还是还有更多呢?

答案 1 :(得分:0)

规范尚不清楚,所以我们只是在猜测我们要实现的目标。

这是一个满足该规范可能解释的查询:

SELECT SUM(m.d1)
     , SUM(m.d2)
  FROM main m
 WHERE m.time1 >= ( SELECT MAX(s.time2) 
                      FROM secondary s 
                  )

“最后一个细胞”是什么意思?我们如何识别辅助表中的行?

SELECT SUM(m.d1)
     , SUM(m.d2)
  FROM main m
 WHERE m.time1 >= ( SELECT s.time2 
                      FROM secondary s 
                     ORDER BY some_expression
                     LIMIT 1
                  )

我们是否只想返回一行,还是要为辅助表中的每一行返回一行?

 SELECT s.time2 
      , ( SELECT SUM(m1.d1)
            FROM main m1
           WHERE m1.time1 >= s.time2
        ) AS tot_d1
      , ( SELECT SUM(m2.d2)
            FROM main m2
           WHERE m2.time1 >= s.time2
        ) AS tot_d2
   FROM secondary s
  ORDER BY s.time2