2012-02-22 4 views
0

구문을 올바르게 처리 할 수없는 것 같습니다. 다른 레코드를 삽입 할 수있게하기 전에 값에 대한 테이블을 검사하려고합니다. 이 같은유효성 검사를 위해 Mysql의 IF EXIST를 어떻게 사용합니까?

뭔가 :

IF EXISTS (SELECT * FROM rooms WHERE id = 1) 
THEN 
INSERT INTO other_table (room_id) VALUES (1) 
END IF 
가 난 그냥 확실히 특정 레코드가 다른 테이블 ... 더욱 이동하려면 입력 할 수되기 전에 존재 만들고 싶어

, 나는 실제로 있는지 확인하고 싶습니다 몇 가지

IF EXISTS (SELECT * FROM rooms WHERE id = 1) AND (SELECT * FROM guests WHERE guest_id = 10) 
THEN 
INSERT INTO other_table (room_id,guest_id) VALUES (1,10) 
END IF 

내가 아직 거래하지 않다, 또는 저장 프로 시저, 그래서 내가 먼저 그 모두를 배울 필요가 있다면, 내가 슬플거야 ... 존재한다.

답변

1

당신은 INSERT INTO ... SELECT 사용할 수 있습니다

INSERT INTO other_table (room_id) 
SELECT 1 FROM rooms WHERE id =1 GROUP BY id 

(GROUP BY

단지 1 행보다 더 확실 하위 쿼리 반환을 만들기 위해, rooms.id이 고유 한 경우, 당신이 필요하지 않은 여러 테이블의

합니다. :

INSERT INTO other_table (room_id,guest_id) 
SELECT 1, 
10 
FROM rooms WHERE id = 1 and exists (SELECT 1 FROM guests WHERE guest_id = 10) LIMIT 1; 
+0

흥미로운 ... 그래서 아무 것도 반환되지 않으면 삽입을 무시할 것인가? 여러 조건에서도 효과가 있다고 생각하십니까? –

+0

@ aiex07 하나 이상의 레코드를 비교해야하는 경우이 구문을 성공적으로 수행하지 못합니다./ –

+0

@Jascha : 2 개의 테이블에 대한 예제가 추가되었습니다. – a1ex07

관련 문제