像SQL示例一样使用knex插入和选择



我正在尝试生成一个查询,就像一个示例SQL查询:

INSERT into [school_tasks_daily] (school_id, task_id) 
SELECT 7, task_id 
FROM homework_tasks
WHERE day = sunday

我想在表homework_tasks中插入值,并使用我已经在表school_tasks_daily中创建的id创建几个列。因为有几个作业任务,属于同一天。

我在

中尝试了以下操作
knex('school]').insert(function() {
this.select('school_id', task_id)
.from('school_tasks_daily')
.whereNotExists(function() {
this.select([ 7,  task_id ])
.from('homework_tasks')
.where('day', sunday))
})

遗憾的是,看起来knex目前不支持从select子句中插入,您可以显式地选择列。

我认为你现在能做的最好的是通过.raw指定插入部分,并保持选择作为查询生成器,即

knex.from(knex.raw('?? (??, ??)', ['school_tasks_daily', 'school_id', 'task_id']))
.insert(function () {
this.select([7, 'task_id'])
.from('homework_tasks')
.where('day', 'sunday')
});

最新更新