如何在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
答案 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