Android - 从带条件的sqlite表中获取最大值

标签 android sqlite

我有一个像...的 sqlite 表

    id     |    pname    |    ptype    |    amount    
------------------------------------------------------
    1      |     aaaaa   |    qw       |    20    
    2      |     bbbbb   |    qw       |    25    
    3      |     ccccc   |    qw       |    55    
    4      |     aaaaa   |    qw       |    42 

我想得到这样的输出

    id     |    pname    |    ptype    |    amount    
------------------------------------------------------
    1      |     aaaaa   |    qw       |    42    
    2      |     bbbbb   |    qw       |    25    
    3      |     ccccc   |    qw       |    55

表示具有最大数量的非重复 pname... 我应该运行哪个查询?

最佳答案

在 SQLite 3.7.11 或更高版本(Android API 级别 16 或更高版本)中,您可以简单地在 SELECT 列表中使用 MAX,其他值将保证来自具有最大值的记录:

SELECT id,
       pname,
       ptype,
       MAX(amount) AS amount
FROM MyTable
GROUP BY pname

如果您需要使用早期版本,则需要明确检查:

SELECT *
FROM MyTable
WHERE NOT EXISTS (SELECT 1
                  FROM MyTable AS smaller
                  WHERE smaller.pname  = MyTable.pname
                    AND smaller.amount < MyTable.amount)

关于Android - 从带条件的sqlite表中获取最大值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22035571/

相关文章:

android - onBackPressed() 方法在 android 中无法正常工作

iPhone SQLite3 问题 - "No such column"

android - 为 Android M 权限对话框提供自定义文本

android - Exoplayer - 如何在点击屏幕时只显示控制按钮

java - Android 自定义 map fragment 属性

php - Symfony2 无法连接到 sqlite

sqlite - 从 C# 查询 Thunderbird 的 SQLite 消息数据库

javascript - 如何将 sqlite 与 React-Native 一起使用?

android - 在 2 个 android 应用程序之间共享 SQLite 数据库?

java - 扩展 View 时是否总是需要调用 super ?