[英]How to Optimize Subquery in Objection JS?
我想优化我的子查询。 从我找到的 mysql 文档中。
SELECT *
FROM t1
WHERE t1.column1 IN ( SELECT column1
FROM t2
ORDER BY column1 );
SELECT *
FROM t1
WHERE t1.column1 IN ( SELECT DISTINCT column1
FROM t2
);
SELECT *
FROM t1 WHERE EXISTS ( SELECT *
FROM t2 LIMIT 1
);
我能够使用这个反对 js 代码来实现这种格式。
Person.query()
.from(
Person.query()
.select(
'persons.name as persons_name',
'persons.disclaimer as persons_disclaimer',
'persons.id as persons_id'
)
.as('optimised')
.limit(40)
)
.select('optimised.*')
.select((qb) => {
qb.select(raw(`sum(act.count)`))
.from('activity as act')
.where('act.p_id', '=', 'optimised.persons_id')
.as('actCountSum');
})
.select((qb) => {
qb.select(raw(`count(*)`))
.from('activity as act')
.where('act.p_id', '=', 'optimised.persons_id')
.as('actCount');
})
.debug();
但问题是我分别得到 null 和 0 因为在 where 子句中,它通过 optimized.persons_id 作为字符串。
有什么解决办法吗?
第三个看起来完全错误。
尝试这个:
SELECT *
FROM t1
WHERE EXISTS (
SELECT 1
FROM t2
WHERE t1.column1 = t2.column1
);
如果没有重复,那就简单地做
SELECT t1.*
FROM t1
JOIN t2 ON t1.column1 = t2.column1
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.