knex.js连接两个子查询(嵌套查询)

时间:2018-03-12 16:35:14

标签: knex.js

我想在knex.js中加入两个子查询并生成这个sql结果。

SELECT '*'
FROM
    (
    SELECT
        `*`
    FROM
        `A`
    WHERE
        A.id = 1
) AS `t1`
LEFT JOIN
    (
    SELECT
        *
    FROM
        `B`
    WHERE
       B.id = 2
) AS `t2`
ON
    `t1`.`c` = `t2`.`d`

我该怎么做?

2 个答案:

答案 0 :(得分:3)

使用此代码:

knex
        .select('*')
        .from(function () {
            this.select('*').from('A')
                .where('id',1)
                .as('t1');
        })
        .leftJoin(
            knex('B').where('id',2).as('t2')
            , function () {
                this.on('t1.c', '=', 't2.d');
            })

答案 1 :(得分:2)

knex(
  knex('A').where('A.id',1).as('t1')
).leftJoin(
  knex('B').where('B.id', 2).as('t2'), 
  't1.c', 
  't2.d'
)