如何在续集中使用COUNT,GROUP BY,ORDER BY编写查询

时间:2019-04-13 06:12:19

标签: sequelize.js

我想使用GROUP BY,ORDER BY,COUNT在续写ORM中编写查询。

这是我的SQL查询:

function setDefaultRole((req, res, next) => {
  if (not some check here) {
    // if check fails, setting default role
    req.user.role = 'mentor'
  }
  // call the next middleware
  next();
})

function getAll((req, res, next) => {
  if (req.user.role == 'mentor') {
    // continue logic
    filter = ???
  }
})

我要续编,请帮帮我。

1 个答案:

答案 0 :(得分:0)

代码

const Op = require("sequelize").Op;
const sequelize = require("../models").sequelize;

models.OutputTable.findOne({
    where: {
      clusterId: {
        [Op.ne]: null,
      },
    },
    attributes: ["bucket_name", "clusterId", [sequelize.fn("COUNT", "1"), "CountedValue"]],
    group: ["clusterId"],
    order: [[sequelize.col("CountedValue"), "DESC"]],
});

说明

使用文档-Querying 很简单。

findOne方法将查询限制为1。attribute子句选择column_names。知道sequelize无法识别您的CountedValue列,因此使用ordersequelize.col(columnAlias)

希望这会有所帮助。