2010-06-13 3 views
2

У меня есть сценарий, где я вычисляю что-то в предложении WHERE моего SQL, но я также хочу получить этот расчет - так как это дорого. Можно ли получить результаты что-то сделано в пункте WHERE, как это:Возможно ли захватить данные из предложения WHERE?

SELECT `foo` FROM `table` WHERE (foo = LongCalculation(`column`)) 

выдавать желаемое за действительное, или возможно с MySQL?

EDIT: Расчета по столбцам зависят

+0

Если вы имеете получил 1000 строк, а LongCalculation будет работать с 1000 различными входами, тогда нет решения. Но если количество разных значений намного меньше 1000, то вы можете использовать промежуточное хранилище кеша внутри LongCalculation, которое, конечно же, должно быть хранимой процедурой. Не знаю, можно ли сохранить значения переменных между вызовами хранимых процедур. – cherouvim

+0

Возможно, вы можете использовать временную таблицу для хранения вычисленных выходов для определенных входных данных. – cherouvim

+0

См. Мой ответ, как я решил это. Я не пытался избежать вычисления каждой строки, всего несколько раз для каждой строки. –

ответ

0

Немного идеи переделки @ cherouvim, и я получил его на работу с рядными-зависимыми функциями:

set @bar = 0; 

SELECT 
    `product_name`, 
    @bar AS `stock` 
FROM `jos_vm_product` 
WHERE (@bar := `product_in_stock`) > 0 
3
set @bar = LongCalculation(); 
select foo from table where [email protected]; 
+0

+1: предполагается, что 'LongCalculation' не зависит от строки (не принимает никаких столбцов из' table'. – van

Смежные вопросы