是否可以从WHERE子句捕获数据?
问题描述:
我有一个场景,我正在计算我的SQL的WHERE
子句中的某些内容,但我也想要计算 - 因为它很昂贵。是否有可能得到的东西WHERE
从句中做的结果,是这样的:是否可以从WHERE子句捕获数据?
SELECT `foo` FROM `table` WHERE (foo = LongCalculation(`column`))
一厢情愿,或与MySQL可能吗?
编辑:计算是依赖列
答
返工@ cherouvim的想法的一点,我得到了它与行相关的函数工作:
set @bar = 0;
SELECT
`product_name`,
@bar AS `stock`
FROM `jos_vm_product`
WHERE (@bar := `product_in_stock`) > 0
答
set @bar = LongCalculation();
select foo from table where [email protected];
+0
+1:假设'LongCalculation'不是依赖于行的(不包含'table'中的任何列。 – van 2010-06-13 07:20:59
如果你已经有1000行,LongCalculation将运行1000个不同的输入,然后没有解决方案。但是如果不同值的数量远远小于1000,那么你可以使用LongCalculation中的中间缓存存储,这当然必须是一个存储过程。不知道是否可以在存储过程调用之间保留变量值。 – cherouvim 2010-06-13 07:54:48
您可能可以使用临时表来存储特定输入的计算输出。 – cherouvim 2010-06-13 07:56:02
查看我的答案,我是如何解决这个问题的。我没有试图避免计算每一行,每行只有一次以上。 – 2010-06-13 08:09:50