mysql - 对父属性找到的按天对象排序查询组

标签 mysql node.js express group-by sequelize.js

所以,我将 sequelize 与 mysql 实例一起使用,并且我有这样的层次结构:一个任务有 n 个图像和 n 个元数据键值对。
我想根据任务的 userId 列获取所有图像,然后将它们按“createdAt”列分组,同时考虑到这一天,因为正常的 groupby 将毫无意义(没有对象共享相同的日期时间)。我做了很多测试来尝试分组,最后我使用了这个查询,结果很糟糕(我有 11 个任务的图像,它检索了 4 个)。老实说,我不知道我做错了什么。你们有什么想法吗?
这是代码片段:

var userId = security.utils.getKeycloakSubject(req);
var where = {
    userId: userId
};
db.image.findAll({
    include: [{
        model: db.task,
        include: [{
            model: db.metadata,
            as: 'metadata'
        }],
        where: where
    }],
    group: [db.Sequelize.fn('DAY', db.Sequelize.col('image.createdAt'))]
}).then(function (images) {
    return res.json(images);
}, function (error) {
    return res.status(500).json(error);
})

最佳答案

我看到了你的问题,还发现了这个:Sequelize grouping by date, disregarding hours/minutes/seconds
这是一个关于组 DAY(createdAt) 的问题,看起来和你的很相似。

我的 GROUP BY DAY() 解决方案如下所示:

    item.findAll({
         attributes: 
       [[sequelize.fn('DATE_FORMAT', sequelize.col('TimeStamp'), '%H'), 'dates']],
         group: [sequelize.fn('DAY', sequelize.col('TimeStamp'))]
       }).
         then(function(result){console.log(result)
       }).
         catch(function(error){}).catch(function(error) {
            console.log(error);
       });

所以原始 SQL 喜欢:SELECT DATE_FORMAT('TimeStamp', '%H') as 'dates' FROM tableName GROUP BY DAY('TimeStamp');
希望对你有帮助,或者你可以给我们看看你想使用的SQL,也许对你也更容易帮助。

祝你好运。

关于mysql - 对父属性找到的按天对象排序查询组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40286525/

相关文章:

mysql - SQL GROUP BY 和 MIN 查找每个部门中工资最低的人

node.js - 在我的Electron应用程序中,我应在哪里执行首次启动功能?

node.js - 如何检查是否安装了 Mongoose (MongoDb)

node.js - 带 Node 的 Firebase, "browser-targeted Firebase bundle"

node.js - 将 ember.js 与 node.js + express.js 结合使用

javascript - 无法将 .pem 文件导入 Express

node.js - 避免在 nodejs 中使用 ../../../require

sql - 错误 1046 未选择数据库,如何解决?

MySQL:获取总小时数,然后乘以费率,然后在一个 SELECT 语句中四舍五入

MYSQL 查询用户是否使用特定优惠券代码下订单