我有一個場景,我正在計算我的SQL的WHERE
子句中的某些內容,但我也想要計算 - 因爲它很昂貴。是否有可能得到的東西WHERE
從句中做的結果,是這樣的:是否可以從WHERE子句捕獲數據?
SELECT `foo` FROM `table` WHERE (foo = LongCalculation(`column`))
一廂情願,或與MySQL可能嗎?
編輯:計算是依賴列
我有一個場景,我正在計算我的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];
+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