DBFlow Android select 最常见的值
DBFlow Android select most common value
我想 select 使用 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不接受别名。或者我应该 运行 只是一个原始查询?
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"))
我想 select 使用 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不接受别名。或者我应该 运行 只是一个原始查询?
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"))