内部连接两个表并从第二个表中为第一个表中的每个条目返回最大值

时间:2016-11-06 15:20:38

标签: android sql sqlite

如何在SQLite中构建一个选择TABLE1中每一行的查询,并从TABLE2中选择一行:

  • 来自id的{​​{1}}值与
  • 之间存在匹配
  • 如果TABLE1中有多个id匹配,则只会返回另一个TABLE2列中的最高值。

这是我现在的表格安排。 DATE列中的值对应r_identifier中的t_id值:

TABLE1("坦克")

TABLE1

TABLE2("读数&#34)

+------+--------------+-------+
| t_id |    t_name    | t_vol |
+------+--------------+-------+
|    1 | A Tank       |    23 |
|    2 | Another Tank |    48 |
+------+--------------+-------+

这是我想从查询中返回的表格。由于+------+--------------+--------+---------+ | r_id | r_identifier | r_date | r_value | +------+--------------+--------+---------+ | 0 | 1 | 5000 | 5 | | 1 | 1 | 6000 | 7 | | 2 | 2 | 7000 | 4 | | 3 | 1 | 8000 | 3 | +------+--------------+--------+---------+ r_identifier有多个条目,因此只返回1中值最高的条目:

r_date

到目前为止,我能够管理的最接近的是受this answer启发的以下声明:

+------+--------------+-------+------+--------------+--------+---------+
| t_id |    t_name    | t_vol | r_id | r_identifier | r_date | r_value |
+------+--------------+-------+------+--------------+--------+---------+
|    1 | A Tank       |    23 |    3 |            1 |   8000 |       5 |
|    2 | Another Tank |    48 |    2 |            2 |   7000 |       4 |
+------+--------------+-------+------+--------------+--------+---------+

这会返回正确的值,但只有一个" tank" - 表中的第一个。

修改 我忘记在原始问题中提到我想在SELECT t.*, r.* FROM t INNER JOIN r ON t._id=r_identifier ORDER BY r_date DESC LIMIT 1 中检索每个值,即使TABLE1中没有TABLE2中具有匹配值的条目列。使用Gordon Linoff's answer作为指南虽然我能够提出以下效果很好的方法:

r_identifier

1 个答案:

答案 0 :(得分:1)

一种方法是使用带有相关子查询的# where OutX is max within each 10 minutes mxX = yeild.resample('10t').OutX.idxmax() # where OutY is max within each 10 minutes mxY = yeild.resample('10t').OutY.idxmax() # union of mxX and mxY idx = mxX.append(mxY, ignore_index=True).unique() # slice yeild (sic) with locations of where # either OutY or OutX is max sample = yeild.loc[idx] 子句来获取最大日期:

WHERE