如何将具有子查询的 PSQL 查询转换为有效的 KnexJS
How to convert a PSQL query which has subqueries to a valid KnexJS
在我的数据库中,我是 运行 一个 PSQL 查询,用于从 2 个表中获取数据。
查询运行良好,但我现在必须在 Knex 中进行翻译,但我遇到了问题,因为我有一个子查询,如您所见,但不知道最好的实现方式。
我正在尝试的一个例子
builder
.whereIn(
columns.id,
builder
.where(feedColumns.conversationId, columns.id)
.groupBy(columns.id)
)
但是失败了,甚至没有控制台记录查询,因为我最后使用 toString()
来查看生成的内容:(
有效的 PSQL 查询
SELECT
*
FROM
"conversation"
WHERE
"conversation"."id" IN(
SELECT
"feed"."conversation_id" FROM "feed"
WHERE
"feed"."status" = 'PENDING_ANSWER')
knex('conversation').whereIn('id',
knex('feed')
.select('feed.conversation_id')
.where('feed.status', 'PENDING_ANSWER')
)
在我的数据库中,我是 运行 一个 PSQL 查询,用于从 2 个表中获取数据。 查询运行良好,但我现在必须在 Knex 中进行翻译,但我遇到了问题,因为我有一个子查询,如您所见,但不知道最好的实现方式。
我正在尝试的一个例子
builder
.whereIn(
columns.id,
builder
.where(feedColumns.conversationId, columns.id)
.groupBy(columns.id)
)
但是失败了,甚至没有控制台记录查询,因为我最后使用 toString()
来查看生成的内容:(
有效的 PSQL 查询
SELECT
*
FROM
"conversation"
WHERE
"conversation"."id" IN(
SELECT
"feed"."conversation_id" FROM "feed"
WHERE
"feed"."status" = 'PENDING_ANSWER')
knex('conversation').whereIn('id',
knex('feed')
.select('feed.conversation_id')
.where('feed.status', 'PENDING_ANSWER')
)