【问题标题】:DBFlow Android select most common valueDBFlow Android 选择最常见的值
【发布时间】:2026-01-27 21:15:01
【问题描述】:

我想使用 dbFlow 选择最常用的名称。 在 SQLite 中是:

SELECT `Employee`.name
FROM `Employee`
GROUP BY `Employee`.name
HAVING COUNT(*) =
  (SELECT MAX(cn) FROM
     (SELECT `Employee`.name, COUNT(*) AS cn
      FROM `Employee`
      GROUP BY `name`))

我试过了:

        SQLite.select(Employee_Table.name)
                .from(Employee.class)
                .groupBy(Employee_Table.name)
                .having(Method.count().eq(
                        SQLite.select(
                                Method.max("cn")).from(
                                SQLite.select(Employee_Table.name, Method.count().as("cn"))
                                        .from(Employee.class)
                                        .groupBy(Employee_Table.name)
                        )
                        )
                )

但是 Method.max 不接受别名。还是应该只运行原始查询?

【问题讨论】:

    标签: android sqlite dbflow


    【解决方案1】:

    Method.max 只接受属性 您可以创建一个。

    public static Property<Long> name(String value) {
        return new Property<Long>(null, value) {
            @Override
            public String toString() {
                return nameAlias.nameRaw();
            }
        };
    }
    

    用法:

    Method.max(name("cn"))
    

    【讨论】: