2013-01-19 2 views
0

입니다. 여기를 통해 Google을 검색했지만 여기에서 내 질문에 대한 답변을 찾지 못했습니다.mysql 쿼리의 조건이

나는 IF 그 방법에서 쿼리 (스토어드 프로 시저)에 사용하려고 해요 :

IF EXISTS (SELECT * FROM TABLE WHERE COLUMN=VALUE) THEN 
DO SOMETHING 
END IF; 

내가 MySQL의 워크 벤치에 tryed했는데 (구문 오류)를 작동하지 않았다.

그런 식으로 IF를 사용할 수 있는지 누가 알 수 있습니까? 사전에

감사합니다.

+3

당신이 DO''어떻게'SOMETHING'을 하시겠습니까? 이 경우 INSERT에서 – eggyal

+0

일 수 있습니다. – Valerio

답변

1

그것이 DELETE 또는 SELECT, 당신은 WHERE 절에 조건을 지정할 수 있습니다, 업데이트입니다 경우 뭔가를

을 무엇에 따라 달라집니다.

WHERE IF((SELECT COUNT(*) FROM TABLE WHERE COLUMN=VALUE) > 0, 1, 2) = 1 

다른 문장 (INSERT, CREATE 등)은 가능하지 않습니다.

+0

삽입을해야하지만 이전에이 값이있는 행이 있는지 확인해야합니다. – Valerio

+0

@Valerio : 따라서 레코드가 이미'COLUMN = VALUE'으로 존재한다면'INSERT'가 수행되기를 원하지 않습니까? 왜 그런 제한을 시행 할 것인가? COLUMN에 대해 "UNIQUE"인덱스를 정의하지 않겠습니까? 삽입물의 경우 – eggyal

+0

은 INSERT ... ON DUPLICATE KEY UPDATE를 참조하십시오. 그것은 정확히 동일하지는 않지만 아마도 당신이 찾고있는 것일 것입니다 – Dutow

0

의견에서 "SOMEETING"은 (는) INSERT 작업입니다. 할 수 있습니다 다음, 대신 :

INSERT INTO tableName 
    (colA, colB, ...) 
VALUES 
    (a, b, ...) ; 

사용 :

INSERT INTO tableName 
    (colA, colB, ...) 
SELECT 
    a, b, ... 
FROM 
    dual 
WHERE 
    EXISTS (SELECT * FROM TABLE WHERE COLUMN=VALUE) ; 
+0

이 구문을 모른다 :(. 나는 시도 할 것이다. 감사합니다! – Valerio

+0

좋아, 내가이 구문을 tryed했습니다 레코드가 alredy가 존재하지 않는 경우에만 삽입해야합니다 그래서 몇 가지 테스트를 본 후에 나에 대한 올바른 구문입니다 : INSERT INTO TABLENAME (COLA, COLB, ...)이 A, B를 SELECT ... 듀얼 어디에서 ** ** EXISTS (표 WHERE SELECT * FROM하지 COLUMN = VALUE); – Valerio

+0

감사합니다. 의견 쓰기에 약간의 문제가 있습니다.) – Valerio