gpt4 book ai didi

mysql - 如何在knexjs中按计算列排序

转载 作者:行者123 更新时间:2023-11-29 17:34:54 24 4
gpt4 key购买 nike

我尝试通过执行以下操作将计算/计算/虚拟列添加到查询中:

knex.select(knex.raw('DATEDIFF("2018-04-15", STR_TO_DATE(birthdate, "%d/%m/%Y")) / 365.25 as age'))
.from('user')
.orderBy('age', 'desc');

但是,我最终遇到了以下错误:

BadRequest: select count(`user`.`id`) as `total` from `user` order by `id` desc, `age` desc - Unknown column 'age' in 'order clause'

我认为它可能与我构建查询的方式有关,但它似乎无法将计算列识别为可以排序的列。

最佳答案

您可以使用orderByRaw并重复您的表达式而不仅仅是别名

knex.select(knex.raw('DATEDIFF("2018-04-15", STR_TO_DATE(birthdate, "%d/%m/%Y")) / 365.25 as age'))
.from('user')
.orderByRaw('DATEDIFF("2018-04-15", STR_TO_DATE(birthdate, "%d/%m/%Y")) / 365.25', 'desc');

我猜 knex 会生成另一个查询来获取不包括 select() 部分的记录总数。

关于mysql - 如何在knexjs中按计算列排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50361714/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com