【发布时间】:2017-10-04 18:38:38
【问题描述】:
假设我在 Python 中有这个列表理解
[f(x, y) for (x, y) in itertools.product(X, Y) if g(x, y)]
其中X 和Y 是列表,f 和g 是作用于列表成员的函数。它如何转换为 SQL 查询?这是我的解决方案:
SELECT
do_something(X.column, Y.another_column, X.our_column),
do_something_else(Y.that_column, X.that_column, Y.my_column)
FROM
this_scheme.your_table as X,
that_scheme.our_table as Y
WHERE
condition(X.column, Y.my_column) AND
another_condition(Y.another_column, X.our_column)
正确吗?可以改进吗?效率高吗?
【问题讨论】:
-
效率取决于诸如索引之类的实现细节,它通常只能用于某些类型的条件(列之间的比较,而不是函数调用)。
-
提供真实的数据样本和预期的结果
-
(x, y)表示每个原始表中只有一列,X.x和Y.y。这与您的 SQL 查询有何关系,该查询在每个表中列出了几列?什么是“坏”列? -
|如何链接 f(x,y) 和 g(x,y) ?我们假设是一个过滤结果的条件?