2010-06-13 58 views
2

我有一個場景,我正在計算我的SQL的WHERE子句中的某些內容,但我也想要計算 - 因爲它很昂貴。是否有可能得到的東西WHERE從句中做的結果,是這樣的:是否可以從WHERE子句捕獲數據?

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

一廂情願,或與MySQL可能嗎?

編輯:計算是依賴列

+0

如果你已經有1000行,LongCalculation將運行1000個不同的輸入,然後沒有解決方案。但是如果不同值的數量遠遠小於1000,那麼你可以使用LongCalculation中的中間緩存存儲,這當然必須是一個存儲過程。不知道是否可以在存儲過程調用之間保留變量值。 – cherouvim 2010-06-13 07:54:48

+0

您可能可以使用臨時表來存儲特定輸入的計算輸出。 – cherouvim 2010-06-13 07:56:02

+0

查看我的答案,我是如何解決這個問題的。我沒有試圖避免計算每一行,每行只有一次以上。 – 2010-06-13 08:09:50

回答

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 2010-06-13 07:20:59

相關問題