2010-03-15 4 views
4

Iam은 SQL의 새로운 함수이고 이전과 비교하여 MySQL 테이블의 값을 비교하는 함수를 만들고 싶습니다.MySQL 함수는 이전에 대해 db 테이블의 값을 비교하기 위해

예를 들어

 
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; 

감사

(IID는 입력 값이다)
+2

정확히 무엇이 문제인지 분명하지 않습니다. – Leslie

+1

이전에 어떻게 정의합니까? 너는 무엇을 찾고 싶니? 가격이 다르거 나 가격이 다른 모든 레코드가 있습니다 (그렇다면 테이블 제품에는 무엇이 저장됩니까?) – Unreason

+0

코드가 유효하지 않습니다. SET val = pVal에 의해 같은 일을 할 수 없습니까? 동일한 가격으로 동일한 제품을 반복합니다. –

답변

1

나는 그들이 일단 여러 값을 반환 테이블에서 선택 쿼리를 실행 한 다음 그 함수에서 반환하는 방법을 잘했다 조작되었습니다. 또한 둘 이상의 행을 반환하는 함수에서 SELECT 쿼리를 실행할 수 있는지 확신 할 수 없었습니다. 첫 번째 대답은 데이터 배열을 반환 할 수 없거나 함수에서 둘 이상의 행을 생각한다고합니다. 따라서이 작업을 수행하는 가장 좋은 방법은 반환 된 새 데이터 집합을 사용하여 임시 테이블을 만드는 것입니다.

 

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

예는 두 번째 대답은 네 개 이상의 행을 반환하는 함수 내에서 SELECT 쿼리를 실행할 수 있습니다.

죄송합니다. MySQL 기능이 상당히 새로워졌습니다.

+2

당신은 무엇을하고 싶은지 설명 할 수 있습니까? 지금 당장은 방아쇠가 당신이 원하는 것일 수도 있습니다. – sfossen

관련 문제