2014-07-20 2 views
0

if 조건 내에서 업데이트 쿼리를 사용할 수 있습니까? 현재이 내가 mysql에서 Select If 조건의 업데이트 쿼리 사용

| Time_In    | Time_Out   | Val1 | Val2 | 
| 2014-07-19 13:00:01 | 2014-07-19 15:00:00 | 5  | 15  | 


SELECT 

IF(`Time_In` >= CAST('13:00:01' AS time) AND `Time_Out` <= CAST('15:00:00' AS time),(Val11 * Val2), NULL) 


FROM table WHERE ID = '5' 

를 사용하고 쿼리는 내가 뭘 바라고 시간이 그냥 것 13시 0분 1초 사이 15시 0분 0초 대신 val1과 열을 곱이며 VAL2 때입니다

SELECT 

IF(`Time_In` >= CAST('13:00:01' AS time) AND `Time_Out` <= CAST('15:00:00' AS time), 
UPDATE SET TABLE Val3 = 10, NULL) 


FROM table WHERE ID = '5' 

같은 형식으로 시도했지만 구문 오류가 발생했습니다.

이것을 달성하는 올바른 방법과 올바른 구문은 무엇입니까?

고맙습니다.

+0

처럼 사용할 수 있습니다 당신은 둘 다 할 수 없습니다 업데이트하고 선택하십시오. –

+0

정말 방법이 없나요? – user3856951

답변

0

이 제품을 찾고 계십니까?

UPDATE table1 
    SET val3 = CASE WHEN TIME(time_in) > '13:00:00' 
        AND TIME(time_out) <= '15:00:00' THEN 10 ELSE NULL END 
WHERE id = 5 

여기 데모 SQLFiddle입니다


UPDATE :

... 나는 ... 선택 및 업데이트 쿼리 모두 기대했다

불행히도 MySQL은 RETURNING 절을 지원하지 않습니다. 따라서 동일한 쿼리에서 두 가지를 모두 수행 할 수는 없습니다. 하지만 정말이 필요하면 그렇게

DELIMITER // 
CREATE PROCEDURE update_select(IN _id INT) 
BEGIN 
    UPDATE table1 
    SET val3 = CASE WHEN TIME(time_in) > '13:00:00' AND TIME(time_out) <= '15:00:00' THEN 10 ELSE NULL END 
    WHERE id = _id; 
    SELECT val3 FROM table1 WHERE id = _id; 
END// 
DELIMITER ; 

같은 저장 프로 시저를 사용하여 구현 그래서 여기

CALL update_select(5); 

SQLFiddle 데모

+0

참으로 내가 이걸 시도했지만 if 조건에서 select와 update 쿼리를 모두 원했지만 select와 update를 할 수 없다는 말을 들었다. – user3856951

+0

업데이트를 보자. – peterm

+0

문제는 미안하지만 선택했다. 당신이 대답 한 첫 번째 것을 사용하십시오. 고맙습니다 – user3856951