首页 文章

在Sequelize中使用具有Inner Join的组给出错误

提问于
浏览
0

我正在尝试编写这个原始查询

SELECT users.status,count(`users`.`id`) AS `count` 
FROM `users` AS `users` 
   INNER JOIN `organization_entries` AS `organizationEntries` ON `users`.`id` = `organizationEntries`.`user_id` 
       AND `organizationEntries`.`organization_id` = '1' 
       AND `organizationEntries`.`type` = '001' 
group by users.status;

在Sequelize .

我在Sequelize中写过这个查询

db.users
    .findAll({
      attributes: [
        'status',
        [db.sequelize.fn('COUNT', 'users.id'), 'entries']
      ],
      include: {
        model: db.organizationEntries,
        where: {


          organization_id: req.params.org_id,
          type: '001',

        },
      },
      group: ['users.status']
    }).then(c => {
      console.log(c);

      let active_users = {
        active_users: c,
      }
      return res.send(active_users);

    })
    .catch(next);

但是当我运行此查询时,我收到此错误

代码“ER_WRONG_FIELD_WITH_GROUP”errno 1055 sqlState“42000”sqlMessage“SELECT列表的表达式#1不在GROUP BY子句中,并且包含非聚合列'ontro.users.id',它在功能上不依赖于GROUP BY子句中的列;这是与sql_mode = only_full_group_by不兼容“

我无法理解我做错了什么 .

1 回答

  • 0

    如果启用了ONLY_FULL_GROUP_BY SQL模式,则MySQL拒绝选择列表,HAVING条件或ORDER BY列表引用非聚合列的查询,这些列既不在GROUP BY子句中命名,也不在功能上依赖于它们 .

    请阅读MySQL Handling of GROUP BY .

相关问题