mysql - 从查询中返回最大值

标签 mysql sql select aggregate-functions

我正在尝试创建一个查询以返回具有最大版本的文件,与服务器的值无关。我怎么能那样做?

实际表格数据:

server    filename    v4    date
local     code1.zip   41    0000-00-00
remote    code1.zip   39    0000-00-00
local     code1.zip   28    0000-00-00
remote    code1.zip   21    0000-00-00
local     code1.zip   32    0000-00-00
remote    code1.zip   27    0000-00-00

查询:

SELECT
    server,
    filename,
    max(v4) as v4,
    date
FROM
    table
WHERE
    date ='0000-00-00'

GROUP BY
    filename,
    server,
    date

实际结果:

server    filename    v4    date
local     code1.zip   41    0000-00-00
remote    code1.zip   39    0000-00-00

预期结果:

server    filename    v4    date
local     code1.zip   41    0000-00-00

编辑:适用于 MySQL

提前致谢。

最佳答案

如果您只想要具有最大 v4 的行,您可以使用它

SELECT
    server,
    filename,
    v4,
    date
FROM
    `table`
WHERE
    date ='0000-00-00'
ORDER BY v4 DESC
LIMIT 1

要获得每个文件名的最大 V4,首先你要按文件名获得 max(v4) 组,然后使用 table INNER JOIN 返回,如下所示

SELECT T1.server,T1.filename,T1.v4,T1.date
FROM
`table` T1 INNER JOIN
    (SELECT filename,max(v4) as maxv4
     FROM `table`
     WHERE date = '0000-00-00'
     GROUP BY filename)T2
ON T1.filename = T2.filename AND T1.v4 = T2.maxV4
WHERE date = '0000-00-00';

关于mysql - 从查询中返回最大值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21241326/

相关文章:

php - 如何使用来自 mysql 的数据填充 android 微调器

mysql - MySQL程序错误

php - 每个人显示一个按日期排序的结果

mysql - SELECT 列但也添加 AVG 列

mysql 统计多列

mysql - 有没有一种简单的方法可以按照一个索引更新所有记录?

SQLite Min 函数在带有 String 数据的行中返回 NULL

mysql插入选择后删除

mysql - 从数据库填充 woocommerce_wp_select 字段

javascript - 使用 Sequelize 的多对多关系的简单示例