2012-05-25 3 views
0

특정 날짜/시간을 기준으로 한 레코드를 먼저 쿼리를 선택하지 않고 하나의 쿼리에 삽입 할 수 있는지 궁금합니다. 예를 들어MySQL 삽입 조건부 날짜 시간

:

나는 2 분 전 아무런 기록이없는 경우에만 삽입 할

.

어떻게 달성 될까요? 사전

답변

2

대신 사용 INSERT INTO table_name VALUES (1,'foobar')의 다음 문에서

감사 :

INSERT INTO foobar (foobar_id,display_name,ctime) 
SELECT 42,'foobar',CURRENT_TIMESTAMP() 
FROM DUAL 
WHERE NOT EXISTS (
    SELECT 1 
    FROM foobar 
    WHERE mtime > CURRENT_TIMESTAMP() - INTERVAL 2 MINUTE 
); 

트릭입니다 경우에만 경우, 삽입 할 열이있는 행을 반환하는 SELECT 문을 찾기 행이 삽입되어야하고 마지막으로 INSERT INTO table_name을 앞에 붙여야합니다. DUAL 테이블은 MySQL 및 다른 DBMS의 특수 테이블입니다.

+0

foo 데이터의 예를 사용하여 답장 할 수 있습니까? – John

+0

삽입 할 변수는 어디에 두어야합니까? (VALUES()) – John

+0

@John : 삽입 할 값은'42'와'foobar'입니다. – nosid