是否可以在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:00:01到15:00之间,而不是将列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)
你在找这个吗?
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 演示
更新:
...我希望同时选择和更新查询...
不幸的是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 演示