相关疑难解决方法(0)

如何避免为IN子句重复此子查询?

我有一个SQL脚本(目前针对SQLite运行,但它可能适用于任何数据库引擎),它使用相同的子查询两次,因为它可能会获取大量记录(该表有几百万行)I'我只想打电话一次.

缩短的伪查询版本如下所示:

SELECT * FROM
    ([the subquery, returns a column of ids]) AS sq
[a couple of joins, that fetches things from other tables based on the ids]
WHERE thisorthat NOT IN ([the subquery again])
Run Code Online (Sandbox Code Playgroud)

我尝试sq以各种方式使用name()(有/无括号,有/无命名sq等列),但无济于事.

难道我真的重复这个子查询?

澄清: 我在python和sqlite中这样做是一个可以完成的小演示,但我希望我的解决方案尽可能少地进行修改.在实际情况中,数据库将有几百万行,但在我的示例中,只有10行具有虚拟数据.因此,在例如MySQL上进行了优化的代码绝对足够好 - 它不必专门针对SQLite进行优化.但正如我所说,需要的修改越少越好.

sql dry subquery in-clause

2
推荐指数
2
解决办法
6186
查看次数

标签 统计

dry ×1

in-clause ×1

sql ×1

subquery ×1