gpt4 book ai didi

javascript - Knex.js 从选择中插入

转载 作者:搜寻专家 更新时间:2023-10-31 23:42:24 24 4
gpt4 key购买 nike

我正在尝试通过 Knex.js 生成如下查询:

    INSERT INTO table ("column1", "column2")
SELECT "someVal", 12345
WHERE NOT EXISTS (
SELECT 1
FROM table
WHERE "column2" = 12345
)

基本上,我只想在特定值尚不存在时插入值。但是 Knex.js 似乎不知道该怎么做;如果我调用 knex.insert()(没有值),它会生成一个“插入默认值”查询。

我尝试了以下方法:

    pg.insert()
.into(tableName)
.select(_.values(data))
.whereNotExists(
pg.select(1)
.from(tableName)
.where(blah)
);

但这仍然只是给我默认值的东西。我尝试添加一个 .columns(Object.keys(data)),希望 insert() 能够兑现这一点,但没有成功。

是否可以使用 knex 生成我想要的查询,或者我只需要构建一个原始查询,而无需 Knex.js 方法?

最佳答案

我认为选择需要传递到插入中:

pg.insert(knex.select().from("tableNameToSelectDataFrom")).into("tableToInsertInto");

此外,为了选择常量值或表达式,您需要在选择中使用 knex.raw 表达式:

knex.select(knex.raw("'someVal',12345")).from("tableName")

这是我的第一篇文章,我没有测试您的具体示例,但我已经使用上述技术完成了与您要求的类似的事情。

关于javascript - Knex.js 从选择中插入,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29870713/

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