2010-03-15 66 views
4

Iam對於SQL中的函數來說很新穎,我想創建一個函數來比較MySQL表中的值與之前的值,我不知道如何執行此操作。MySQL的函數來比較db表中的值與以前的

例如(IID是輸入值)

 
DECLARE pVal INT(20); 
DECLARE val INT(20); 

SELECT price INTO pVal FROM products WHERE Id=iId; 

SELECT price FROM products; 

IF price == pVal THEN 
SET val = price; 
END IF; 

感謝

+2

究竟是什麼問題並不十分清楚? – Leslie 2010-03-16 14:48:16

+1

你如何定義之前?你想找什麼?所有具有不同價格或產品價格不同的記錄(如果是這樣,表格產品存儲了什麼?) – Unreason 2010-03-31 11:52:34

+0

您的代碼無效。難道你不能通過SET val = pVal來做同樣的事情嗎?您正在以相同的價格迭代相同的產品。 – 2010-04-01 20:27:19

回答

1

我不知道如何在一個表上運行一個選擇查詢,然後從該函數返回返回多個值,一旦他們有被操縱。此外,我不確定是否可以在返回多行的函數中運行SELECT查詢。第一個答案是你不能返回一個數組數組,或者我認爲從一個函數中有多行。因此,我認爲最好的方法是使用返回的新數據集創建一個臨時表。

 

DROP TEMPORARY TABLE IF EXISTS employeeTemp; 
    CREATE TEMPORARY TABLE employeeTemp AS 
    SELECT id,start_date 
    FROM employee; 

其次,答案是肯定的,你可以運行一個函數內部SELECT查詢返回不止一行。

對不起,我對MySQL的功能很陌生。

+2

你能解釋一下,你想做什麼?因爲現在我會認爲觸發器可能是你想要的。 – sfossen 2010-03-26 16:21:45