我在SQLite Android数据库中有以下SQL查询:
Select * from Items, Deadlines
这将返回给我这样的东西:
id - item_id - deadline
1 - 200 - 2018-02-09 10:55:00
2 - 200 - 2018-02-09 10:55:00
3 - 201 - 2018-02-09 10:55:00
4 - 201 - 2018-02-09 10:55:00
5 - 201 - 2018-02-09 10:55:00
6 - 200 - 2018-02-09 10:52:00
7 - 200 - 2018-02-09 10:52:00
8 - 200 - 2018-02-09 10:52:00
我想为每个item_id添加另一个结果列,例如lowest_deadline。所以我想在完整的结果集中有这样的东西:
id - item_id - deadline - lowest_deadline
1 - 200 - 2018-02-09 10:55:00 - 2018-02-09 10:52:00
2 - 200 - 2018-02-09 10:55:00 - 2018-02-09 10:52:00
3 - 201 - 2018-02-09 10:55:00 - 2018-02-09 10:55:00
4 - 201 - 2018-02-09 10:55:00 - 2018-02-09 10:55:00
5 - 201 - 2018-02-09 10:55:00 - 2018-02-09 10:55:00
6 - 200 - 2018-02-09 10:52:00 - 2018-02-09 10:52:00
7 - 200 - 2018-02-09 10:52:00 - 2018-02-09 10:52:00
8 - 200 - 2018-02-09 10:52:00 - 2018-02-09 10:52:00
你需要明白,这个查询只是对我更长的查询的简化。所以我需要的是:
Select a.*
CASE WHEN ....a.item_id???....... END AS lowest_deadline
FROM (Select * from Items, Deadlines) a
有人知道答案吗?非常感谢
答案 0 :(得分:0)
我认为您需要在Items
和Deadlines
之间进行关键。
Select
Items.id,
Items.item_id ,
min(Deadlines.deadline) lowest_deadline
from Items, Deadlines
where Items.item_id =Deadlines.item_id
分组 Items.id, Items.item_id
答案 1 :(得分:0)
通常,请勿在{{1}}子句中使用逗号。如果您想要明确的8million
,请使用from
。
有多种方法可以获得您想要的效果。 “传统”方法是聚合和cross join
:
cross join
我有点怀疑你真的只希望每个项目只有一行,而且最小。如果是这样,你可以这样做:
join