2014-07-20 72 views
0

是否可以在if條件中使用更新查詢?目前,這是我使用在選擇條件中使用更新查詢如果條件在mysql中

| 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' 

查詢什麼我希望做的是當時間乘以VAL1列,而不是13時00分01秒和15:00:00之間和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

是啊我試過這樣,但我希望如果條件都選擇和更新查詢,但被告知我不能同時選擇和更新 – user3856951

+0

看看更新 – peterm

+0

對不起,但我選擇了只是使用你的第一個答案。謝謝 – user3856951