【发布时间】:2022-01-13 15:55:48
【问题描述】:
(我真的很难用几句话正确地问这个问题,所以很抱歉标题。我尽力了。)
我有一个这样的数据库:
| id | animal | date | no |
|---|---|---|---|
| 1 | dog | blank | 0 |
| 2 | cat | blank | 0 |
| 3 | dog | 07/12 2021 | 3 |
| 4 | dog | 08/12 2021 | 2 |
| 5 | cat | 08/12 2021 | 4 |
(该表是 Android Studio 中使用 java 的较大项目的简化表。)
我想查询这个数据库以便:
- 我在某天得到动物
- 如果某天没有给动物,我想要那个动物所在的行和一个空白日期
例子:
- 如果日期是 2021 年 8 月 12 日,我想要 id 为 4 和 5 的行。
- 如果日期是 2021 年 7 月 12 日,我想要 id 为 3 和 2 的行(那天没有猫)
- 如果日期是 2021 年 6 月 12 日(或任何其他日期),我想要 id 为 1 和 2 的行(那天没有猫和狗)
我知道我可以从某个日期加上那些日期空白的,通过:
@Query("SELECT *
FROM db
WHERE (db.date LIKE :date OR db.date LIKE :blank)
ORDER BY no ASC")
但是,我怎样才能得到我想要的呢?
【问题讨论】:
-
id 1 和 2 行是某种“虚拟”行吗?奇怪的设计。
-
是的,请客气。它们应该是“后备”选项。 (为了让问题更容易理解,我省略了一些列,但这些列包含我需要的信息。)
-
将“Top 1”添加到您的查询中,您就解决了。
-
动物是固定的吗?只有狗还是猫?还是有-n-动物?
-
可以有没有任何“空白日期”的“牛”。但如果能在没有“牛”的情况下解决我的问题,那肯定聊胜于无!