2016-06-20 2 views
0

mySQL 스크립트 파일을 만들려고합니다. 따라서 다른 데이터베이스에서 변경 사항을 쉽게 실행할 수 있지만 IF 문에 문제가 있습니다. (나는 MySQL Workbench를 사용하고있다.)MySQL의 IF 문을 사용하는 동안 오류가 발생했습니다

CREATE TABLE IF NOT EXISTS `build` (
    `ID` int(11) NOT NULL AUTO_INCREMENT, 
    `Version` varchar(20) NOT NULL, 
    `Date` datetime DEFAULT NULL, 
    PRIMARY KEY (`ID`) 
) ENGINE=InnoDB DEFAULT CHARSET=utf8; 

IF EXISTS(select 1 from build where Versao = '1.1') THEN select "yes"; 

만들기 테이블 문장이 제대로 실행되지만 문주고 다음과 같은 오류를 "존재하는 경우 (... 선택"

구문 오류 : (있는 경우)는 유효 입력에서이되지 않는 경우 이 위치

은 "예"를 선택 명령이 실제로 삽입 명령으로 대체 될 것이다. 난 그냥 IF 명령이 작동하는지 테스트하기 위해 노력하고있어.

을 나는 또한합니다 (IF가 존재 넣어 시도했습니다 구분 된 쿼리에서 행을 선택 했는데도 동일한 결과가 나타납니다.

내가 뭘 잘못하고 있니?

답변

1

당신이 사용하기를 원하는 SQL IF 함수는 선언하지 않은 함수 내에서 사용해야합니다. 당신은 당신이 기대하는 방식으로 작동하는 독립형 쿼리를 원하는 경우

, 당신이 시도 할 수 있습니다 :

SELECT CASE WHEN EXISTS (SELECT 1 FROM build WHERE Versao = '1.1') 
      THEN "yes" 
      ELSE "no" 
     END 
LIMIT 1 
0

SQL 기능 만 문 내부 또는 저장 프로 시저/루틴 내에서 사용할 수 있습니다.

SELECT 문은 당신을 위해 작동합니다 :

SELECT IF(EXISTS(SELECT 1 FROM build WHERE Versao = '1.1'), 'yes', 'no') AS test; 
+0

문제는 내가 yes 또는 no 반환하지 않는다는 것입니다. 그것은 단지 시험이었습니다. 내가 원하는 것은 기존 테이블에 따라 하나 이상의 명령을 실행하는 것입니다. – Marlon

+0

확인. 조건부로 실행하려는 명령의 예를 들어 주시겠습니까? SQL에 있습니까? –

관련 문제