在MySQL查询中获取最大值

7
我有一张表格。
       id     mid    userid    remarks
       1       2       8          7 
       2       2       8          6
       3       2       8          4 
       4       2       8          5
       5       2       8          2
       6       2       8          3
       7       2       8          7
       8       2       8          0
       9       2       8          1
       10      2       8          8

我需要最后一行备注之前的行。即备注“1”

SELECT MAX(id),mid,userid,remarks FROM sample 

你需要具有最大或第二大ID的备注吗? - Magnus
是的,绝对需要第二大的。 - thersa
3个回答

20
Select Id,mid,userid,remarks from sample Where id<(select max(Id) from sample)
order by id desc limit 1

或者

Select Id,mid,userid,remarks from sample 
order by id desc limit 1 offset 1

感谢您的回答。我想知道这个偏移量是用来做什么的? - thersa
@thersa 这些LIMIT和OFFSET命令只在MYSQL中有效。 "LIMIT 1"从结果集中取第一行。 OFFSET 1将“LIMIT 1”的起始行移动到第二行。 "OFFSET 2"将其移动到第三行... - valex

4

试试这个:

    SELECT MAX(id),mid,userid,remarks 
    FROM sample WHERE id NOT IN  (
    SELECT MAX(id) FROM sample
    )
    GROUP BY mid,userid,remarks 

编辑

看看这个是否有效

SQL FIDDLE演示


看起来我误解了问题。 - Prince Jea
它显示 #1052 - IN/ALL/ANY 子查询中的 'id' 列存在歧义。 - thersa

3

针对mysql Node.js开发者

在使用node.js的mysql驱动时,我无法获取直接值,例如当我运行以下查询:

SELECT MAX(id) FROM Users

我得到的结果是 [RowDataPacket { MAX(id): 1 }]

我尝试从对象中检索值console.log(MAX(id)),但我无法成功

因此,我设置了一个别名即maxid

SELECT MAX(id) as maxid FROM Users

并将其作为[RowDataPacket { maxid: 1 }]获得

我可以通过console.log(maxid)检索它


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接