mysql - 如何获得数据库列中的最大值?

标签 mysql node.js sequelize.js

我有一个数据库,有一堆不同的列。假设它看起来像这样:

   TABLE: dbtable
 __________________________________
|  onecolumn  |  id   |  twocolumn |
|---------------------|------------|
|   some      |   1   |  matchthis |
|  random     |   2   |  dontmatch |
|  thing      |   3   |  matchthis |
|   here      |   4   |  dontmatch |
|__________________________________|
我还有一个 Node.js 程序(使用 Sequelize),它应该对 dbtable 表进行排序,并找到具有最高 ID 值且两列等于“matchthis”的行。 (所有这些值都是示例)。
代码如下所示:
const rel = await dbtable.findOne({
        where: {
            twocolumn: req.params.twocolumn // Url param that equals "matchthis"
        },
        order: Sequelize.fn('max', Sequelize.col('id')),
    });
但是,它没有返回 {"onecolumn": "thing", "id": "3", "twocolumn": "matchthis"} ,而是返回此错误:
SequelizeDatabaseError: Expression #1 of ORDER BY contains aggregate function and applies to the result of a non-aggregated query
我对数据库不太擅长,我似乎无法弄清楚发生了什么。

最佳答案

您的查询不包含 GROUP BY 子句,使其成为错误提示的“非聚合查询”,使其与聚合函数( MAX() )的排序不兼容。
您可以直接在 id 列上订购。

const rel = await dbtable.findOne({
    where: {
        twocolumn: req.params.twocolumn
    },
    order: [
        [ 'id', 'DESC' ]
    ]
});

关于mysql - 如何获得数据库列中的最大值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/66414351/

相关文章:

javascript - Riot.js 动态呈现来自不同文件服务器端的嵌套自定义标签

sequelize.js - 在全局钩子(Hook)中识别 Sequelize 模型

MySQL JOIN查询索引优化

c# - EntityFramework 代码首先 : Generate view

javascript - 为什么 https.Agent 在通过 node-http-proxy 代理时抛出解析错误?

mysql - 如何使用 sequelize-cli 设置 mysql 日期类型长度

node.js - 过滤 Sequelize 实例

mysql - 在 MySQL 表中插入值时如何覆盖自动递增主键的属性?

mysql - 使用条件请求加入 2 个或 3 个 MySQL 表

javascript - npm zombie 将<head>内容放入<body>中