postgresql - 如何在 Sequelize 中查询无关联的 INNER JOIN?
问题描述
我可以在 Sequelize 中进行自我内连接查询吗?
我有一个模型订购
ordering.js
sequelize.define('ordering', {
id: {
allowNull: true,
primaryKey: true,
type: DataTypes.STRING,
},
deliveryData: {
type: DataTypes.JSONB,
}
}, {
schema: 'business'
})
我想找出重复的(JSONB 字段)行,
但我找不到如何在没有关联的情况下进行内部加入
试:
Ordering.findAll({
include: [{
model: Ordering,
attributes: [
[sequelize.json('deliveryData.receiver.name'), 'name'],
[sequelize.json('deliveryData.receiver.address'), 'address'],
[sequelize.fn("COUNT", sequelize.col("*")), 'num']
],
group: [sequelize.json('deliveryData.receiver.name'), sequelize.json('deliveryData.receiver.address')],
having: sequelize.literal('COUNT(*) > 1'),
on: {
name: sequelize.json('deliveryData.receiver.name'),
address: sequelize.json('deliveryData.receiver.address')
}
}]
})
结果:
Unhandled rejection SequelizeEagerLoadingError: ordering is not associated to ordering!
我可以通过 INNER JOIN 子查询
const Ordering = DB['ordering']
Ordering.findAll({
attributes: [
[sequelize.json('deliveryData.receiver.name'), 'name'],
[sequelize.json('deliveryData.receiver.address'), 'address'],
[sequelize.fn("COUNT", sequelize.col("*")), 'num']
// include: [[sequelize.fn("COUNT", sequelize.col("name")), "test"]]
],
group: [sequelize.json('deliveryData.receiver.name'), sequelize.json('deliveryData.receiver.address')],
having: sequelize.literal('COUNT(*) > 1')
})
预期结果是
SELECT id, "deliveryData"->'receiver'->>'name', "deliveryData"->'receiver'->>'address' FROM "business"."orderings" AS ordering
INNER JOIN
(
SELECT "deliveryData"->'receiver'->>'name' as name, "deliveryData"->'receiver'->>'address' as address, COUNT(*)
FROM "business"."orderings"
GROUP BY "deliveryData"->'receiver'->>'name', "deliveryData"->'receiver'->>'address'
HAVING COUNT(*) > 1
) od ON ordering."deliveryData"->'receiver'->>'address' = od."address" AND ordering."deliveryData"->'receiver'->>'name' = od."name"
解决方案
推荐阅读
- excel - 表格单元格中的 Word VBA 格式编号 - 单元格文本无法识别
- r - 使用 R 中的行名创建公式
- c# - 如何根据条件告诉 JsonWriter 什么都不做?
- python - 如何构建自定义 lxml 解析器?
- ruby-on-rails - 更快地使用数据表和嵌套模型?
- python - Python ElementTree find() 使用命名空间
- android - Metro Bundler 和 Expo 需要证书,两者都出现错误,无法找到请求目标的有效证书路径
- java - 提示 HINT_PASS_DISTINCT_THROUGH 将 PageRequest 的每页返回的实体数量减少到配置的页面大小以下 (PostgreSQL)
- html - 我的 github 页面没有默认加载 index.html
- java - 我正在尝试在 java 中打印一个数组,我需要同时使用 public void intArray() 作为方法