问题描述
SELECT
*
FROM
ad AS a
LEFT JOIN ad_file AS af ON
af.ad_id = a.id
AND af.file_id = (
SELECT
MIN(file_id)
FROM
ad_file AS afmin
WHERE
afmin .ad_id = a.id )
这是我的JS代码:
const trx = await knex.transaction();
const query = trx({a: "ad"});
const fileMin = trx({afm: "ad_file"});
fileMin.min("file_id");
fileMin.where("afm.ad_id",knex.raw("`a`.`id`"));
query.leftOuterJoin({af: "ad_file"},function () {
this.on("a.id","af.ad_id");
this.on("af.file_id",fileMin);
});
select
*
from
`ad` as `a`
left outer join `ad_file` as `af` on
`a`.`id` = `af`.`ad_id`
and `af`.`file_id` =
select
min(`file_id`)
from
`ad_file` as `afm`
where
`afm`.`ad_id` = `a`.`id`
如何为SELECT MIN(file_id) FROM ... WHERE
添加括号?
解决方法
这是我自己的解决方案:
query.leftOuterJoin({af: "ad_file"},function () {
this.on("a.id","af.ad_id");
this.on("af.file_id",trx.raw("?",[fileMin]));
});