是否可以在 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: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'
我尝试了这样的方法,但出现语法错误。
如何实现这一目标的正确方法和正确语法?
谢谢
最佳答案
你在找这个吗?
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 演示
<小时/>更新:
... I was hoping for both select and update query ...
不幸的是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 演示
关于mysql - 在 mysql 的 Select If 条件中使用更新查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24853421/