【问题标题】:Ormlite orderBy max(ColumnName)Ormlite orderBy max(ColumnName)
【发布时间】:2013-10-01 03:02:38
【问题描述】:

您好,我需要在 ORMLite 中使用max(columnName) 的订单。我有 SQL 查询,但我需要知道如何使用这个查询。这是我的查询:

SELECT  * FROM table where place = 'somePlace' group by name
    order by MAX (statusDate)

statusDate 列包含"yyyy-dd-mm" 格式的日期。我得到的结果是带有recentDates 的列表。

【问题讨论】:

  • 一定要明白?您需要知道如何使用 ormlite 发出 sql 请求?
  • @HoodVinci 是的,我确实需要上述相应的 ormlite 查询
  • statusDate 订购与按其MAX 订购有什么区别?我认为您应该只使用 order by 并删除 MAX 关键字。
  • @Gray 那是因为我的名字相同但日期不同,我只需要最近的日期。

标签: android sqlite ormlite query-builder


【解决方案1】:

使用查询构建器,并使用 where 和 orderBy 来优先处理

QueryBuilder<YourObject, Integer> q = yourDaoObject.queryBuilder();
Where<YourObject, Integer> wh = q.where();
wh.eq("place", "some_place");
q.orderBy("statusDate", false);
List<YourListOfObects> yourList = q.query();

但在此之前,您应该存储一个 long 来存储您的 Date https://stackoverflow.com/a/6993420/2122876

【讨论】:

  • 感谢您的回答,但我需要 max(statusDate) 来获取最新的名称条目。这样结果列表将只包含最近日期的数据
【解决方案2】:

我的名字相同但日期不同,我只需要最近的日期。

如果您尝试从 Table 获取最大 statusDate 的元素,那么您应该执行降序排列,限制为 1。类似:

QueryBuilder<Foo, Integer> qb = fooDao.queryBuilder();
qb.where().eq("place", "some_place");
qb.orderBy("sttusDate", false); // descending sort
// get the top one result
qb.limit(1);
Foo result = qb.queryForFirst();

【讨论】:

  • 但我需要来自单个查询的所有列表。也就是说,在某些名称中只有一个日期,而对于某些名称,有不同的日期,我需要获取所有列表(即,如果名称相同)使用不同的日期选择其最大日期,如果只有一个名称选择其对应的日期)
【解决方案3】:

我做了这样的事情。请在第一行创建您自己的查询生成器。

QueryBuilder<MyRowObject, Integer> queryBuiler = "Get Query builder" //getDaoXXX().queryBuilder();

MyRowObject firstLatestRow = queryBuiler.orderBy("dateColoumn", false).queryForFirst();

希望对你有帮助

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-07-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多