我想问一下如何简化下面的准备语句,所以它只使用 2 个,而不是 3 个问号 (?),至于每个 'sytosc + ?'我正在设置相同的值。
PreparedStatement psUp = conn.prepareStatement("UPDATE zawodnicy "
+ "SET sytosc = CASE WHEN (sytosc + ? > 100) THEN 100 ELSE sytosc + ? END "
+ "WHERE id=?");
我知道在 SQL 中你可以这样做:
SET @a = 25;
UPDATE zawodnicy SET sytosc = CASE WHEN (sytosc + @a > 100)
THEN 100 ELSE sytosc + @a END WHERE id = 1
显然你不能把它放到这个准备好的语句中,因为它们实际上是两个语句。
我想知道在第一次评估“sytosc + ?”时是否真的有办法在这种 SQL 更新中分配局部变量?
我非常感谢与 MySQL 兼容的解决方案,因为这是我在这个项目中使用的解决方案。
最佳答案
UPDATE zawodnicy SET sytosc = LEAST( 100, sytosc + ? )
WHERE id = ?
关于java - SQL更新方程变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8834856/