은 다음 준비 문을 단순화하는 방법을 묻습니다. 따라서 'sytosc +?'와 같이 3 개의 물음표 (?) 대신 2 개만 사용하게됩니다. 나는 같은 가치를 설정하고있다.방정식에 대한 변수가있는 SQL 업데이트
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과 호환되는 솔루션에 크게 감사 할 것입니다.
감사. 이것은 내가 한 것입니다. 나는 그것이 나의 특별한 문제를 완벽하게 받아들이 기 때문에 그것을 받아 들인다. 난 궁금해, 거기에 더 복잡한 상황에 대한 해결책 (다른 @ JB Nizet 제공), 어디에 쿼리를 통해 동일한 값을 참조하십시오? – Boro
지금 당장 보편적 인 해결책을 생각할 수 없으며 때로는 질의를 피하기 위해 단순화 할 수 있습니다. – piotrm