我有一个要从中获取数据的表,这取决于另一个表上的另一个单元格。
主要:
.. | 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;
答案 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