Sqlite - Case来自嵌套的Select结果集

时间:2018-02-09 11:22:27

标签: android sql sqlite case

我在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

有人知道答案吗?非常感谢

2 个答案:

答案 0 :(得分:0)

我认为您需要在ItemsDeadlines之间进行关键。

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