javascript - sequlize order by 仅来自主查询
问题描述
如何仅从主查询中订购?这是我的例子。
model
.findAndCountAll({
where: {
status: 'Pending'
},
attributes: [
'id',
[Sequelize.literal('CAST((SELECT count(*) FROM "table1" WHERE "table1"."id" = "model"."id" ' +
) AS INTEGER) '), 'table1Count']
],
include: [
{
model: model2,
as: 'model2'
}
],
limit: limit,
offset: offset,
order: [
[Sequelize.literal('CASE WHEN "table1Count" >= 1 THEN "table1Count" END'), 'DESC','NULLS LAST'],
['id', 'ASC']]
})
生成的查询如下。在这里我得到'列“table1Count”不存在'。
SELECT
"model".*,
"model2"."id" AS "model2.id",
"model2"."name" AS "model2.name"
FROM (SELECT
"model"."id",
CAST((SELECT count(*)
FROM "table1"
WHERE "table1"."id" = "model"."id" AS INTEGER) AS "table1Count"
FROM "model" AS "model"
WHERE "model"."status" = 'Pending'
ORDER BY CASE WHEN "table1Count" >= 1 **how to avoid order by here**
THEN "table1Count" END DESC NULLS LAST, "model"."id" ASC
LIMIT '50'
OFFSET '0') AS "model" LEFT OUTER JOIN
"model2" AS "model2" ON "model"."id" = "model2"."modelId"
ORDER BY CASE WHEN "table1Count" >= 1
THEN "table1Count" END DESC NULLS LAST, "model"."id" ASC;
我怎样才能只从主查询中订购?
预期查询如下..
SELECT
"model".*,
"model2"."id" AS "model2.id",
"model2"."name" AS "model2.name"
FROM (SELECT
"model"."id",
CAST((SELECT count(*)
FROM "table1"
WHERE "table1"."id" = "model"."id" AS INTEGER) AS "table1Count"
FROM "model" AS "model"
WHERE "model"."status" = 'Pending'
LIMIT '50'
OFFSET '0') AS "model" LEFT OUTER JOIN
"model2" AS "model2" ON "model"."id" = "model2"."modelId"
ORDER BY CASE WHEN "table1Count" >= 1
THEN "table1Count" END DESC NULLS LAST, "model"."id" ASC
只需要来自主/外部查询的订单
解决方案
我认为您所需要的只是separate : true
单独运行您的查询
include: [
{
model: model2,
as: 'model2' ,
separate : true // <---- Magic is here
}
],
推荐阅读
- node.js - 如何修复 npm ERR!peer dep 缺失:discord.js@11.5.1 需要的 node-opus@^0.2.7?
- reactjs - Google Calendar API 是否允许在多供应商 React Web 应用程序中安排约会?
- performance - 在 GPU 上运行多个深度学习模型时如何优化
- c# - automapper - 将列表属性展平为单个单个属性
- python - Python如何手动结束收集数据的无限while循环,而不结束代码并且不使用KeyboardInterrupt?
- javascript - Vue.js - 内联调用异步方法
- java - 如何使用 Spring Integration 动态创建多个 TcpOutboundGateways?
- python-3.x - 如何将数据集导入 kaggle
- ios - 通用参数“T”无法用闭包推断 - Swift 4
- python - 创建绘图并将绘图同名保存为 CSV 文件