【发布时间】:2021-11-03 19:23:50
【问题描述】:
我想合并来自两个数据表的信息,t1 和 t2
t1:
ID TIME_ADD
1 1620838960308
2 1620879991077
3 1620927396290
t2:
ID TIME_START TIME_END LEVEL
1 1620837000611 1620840600621 0
2 1620837000611 1620846000620 1
3 1620837000611 1620851400622 0
4 1620837000611 1620879262116 3
5 1620837000611 1620881062117 2
6 1620837000611 1620882862117 0
7 1620923400574 1620923400577 2
8 1620923400574 1620930600578 1
...
因此,我的查询如下:
SELECT t1.*, t2.LEVEL
FROM t1
INNER JOIN t2
ON t2.TIME_START < t1.TIME_ADD AND t2.TIME_END >= t1.TIME_ADD
WHERE t1.TIME_ADD >= '1620837000611' AND t1.TIME_ADD <= '1620882862117'
ORDER BY t1.TIME_ADD
GROUP BY t1.TIME_ADD
预期结果是
ID TIME_ADD LEVEL
1 1620838960308 0
2 1620879991077 2
但是,上面的查询不起作用,似乎是我错误地使用了ORDER BY 和GROUP BY。花了很长时间试图找到一种方法,也考虑使用INNER JOIN 和LIMIT,但没有成功。因此,我们将非常感谢您提供的任何支持。
【问题讨论】:
-
GROUP BY 必须写在 ORDER BY 之前。
-
但是我会得到一个错误的结果
-
你会得到你想要的结果:dbfiddle.uk/…
-
嗯,这很奇怪,因为在 android sqlite 查询中它不起作用
-
第一个是指 t2.ID 最少的那个?
标签: sqlite group-by android-sqlite min having-clause