我希望通过sequelize ORM获得这样的查询:
SELECT "A".*,
FROM "A"
LEFT OUTER JOIN "B" ON "A"."bId" = "B"."id"
LEFT OUTER JOIN "C" ON "A"."cId" = "C"."id"
WHERE ("B"."userId" = '100'
OR "C"."userId" = '100')
Run Code Online (Sandbox Code Playgroud)
问题是sequelise不让我在where子句中引用"B"或"C"表.以下代码
A.findAll({
include: [{
model: B,
where: {
userId: 100
},
required: false
}, {
model: C,
where: {
userId: 100
},
required: false
}]
]
Run Code Online (Sandbox Code Playgroud)
给我
SELECT "A".*,
FROM "A"
LEFT OUTER JOIN "B" ON "A"."bId" = "B"."id" AND "B"."userId" = 100
LEFT OUTER JOIN "C" ON "A"."cId" = …Run Code Online (Sandbox Code Playgroud) 我正在尝试从 CTE 插入(或更新冲突)行,但正在努力为其找到正确的语法。我插入的表格看起来像这样(为了清楚起见简化了)
Column | Type | Modifiers
----------------------+--------------------------+------------------------------------------------------------------
id | integer | not null default nextval('"QuestionStatistic_id_seq"'::regclass)
questionId | integer |
count | integer | not null default 0
Indexes:
"QuestionStatistic_pkey" PRIMARY KEY, btree (id)
"QuestionStatistic_questionId_key" UNIQUE CONSTRAINT, btree ("questionId")
Run Code Online (Sandbox Code Playgroud)
这是我的查询:
with "Statistic" as (
select "questionId", "count" from "SomeTable"
)
INSERT INTO "QuestionStatistic" ("questionId", "count") SELECT "questionId", "count" FROM "Statistics"
ON CONFLICT ("questionId") DO UPDATE SET "count" = "Statistics"."count"
Run Code Online (Sandbox Code Playgroud)
这使我ERROR: missing FROM-clause entry for table "Statistics"的SET …
sql postgresql with-statement common-table-expression postgresql-9.5