如何使用按计算列排序的结果进行查询? (我无法预先计算其他列中的结果来进行排序!)
示例:
在像这样的RDBMS表中:
TABLE products(
product_id INTEGER NOT NULL,
description VARCHAR(255) NOT NULL,
price DECIMAL(5,2) NOT NULL,
qty INTEGER NOT NULL,
);
我可以执行此查询:
SELECT product_id, (price * qty * {{current_tax}}) AS custom_calc
FROM products
ORDER BY custom_calc DESC;
我的问题我有一个变量,在这种情况下 {{current_tax}} 。这样我就无法预先计算结果来进行排序,因为变量可以随时改变。
这样的问题有一个优雅的解决方案吗?
坦克!
答案 0 :(得分:2)
正如您在documentation中所看到的,GQL不支持SELECT语句中的任何算术。
GQL可以方便来自SQL后台的人,但是低级数据存储API更像是索引的k / v存储。
如果current_tax
始终是price * qty
上应用的肯定因素,则无论如何都不会修改排序,因此我建议将price * qty
存储为新的产品字段,{{1}并为它创建一个DESC索引。