내 행의 열 X에 할당 할 값이 다른 행의 특정 열 X 값보다 크거나 같은 경우에만 MySQL에서 UPDATE를 수행하는 훌륭한 솔루션이 있습니까?) 행?조건부 업데이트 new_value <= value_from_different_row
나는 키 => 값 저장소로 2 열이있는 테이블을 사용하고, 나는 이런 일이 :
key | value --------------------------- period_a_begin | 2014-01-01 period_a_end | 2014-01-15 period_b_begin | 2014-01-20 period_b_end | 2014-02-15
가 어떻게 period_a_end의 새로운 값이 크거나 같은 것을 확인 할 수 있습니다 period_a_begin 값의 값보다 작거나 period_a_end를 업데이트하는 데 사용하는 동일한 SQL 쿼리에서 period_b_begin의 값보다 작거나 같습니까?
내가 서브 쿼리를 사용하여 시도했지만 성공하지 :
You can't specify target table configtable for update in FROM clause
내가 그 오류가 팝업 이유를 이해하지만, 나는이를 찾기 위해 실패 :
UPDATE configtable SET configtable.value=:myvalue WHERE configtable.key="period_a_end" AND :myvalue >= (SELECT configtable.value FROM configtable WHERE configtable.key = "period_a_begin") AND :myvalue <= (SELECT configtable.value FROM configtable WHERE configtable.key = "period_b_begin");
을 나는 다음과 같은 오류가 계속 방법은 내 준비 문에서 전체 수표를 제거하지 않고이 일을 할 수있는 방법을 찾을 수 있습니다. :/
아이디어가 있으십니까?
고마워요. 우아하지 않을뿐만 아니라, MySQL 서버의 이러한 동작이 버그로 간주 될 수 있는지 확신 할 수 없습니다. 따라서 미래에 시간이 변경되거나 수정 될 수 있습니다. – user3485397
@ user3485397. 나는 우아함의 부족함을 이해할 수 있지만 "버그"부분이 무엇을 의미하는지 알지 못합니다. 서브 쿼리의 추가 레이어가 있거나없는 쿼리는 표준 SQL입니다. 두 번째 레이어는 버그를 해결하는 데 필요합니다. 현재의 MySQL 구현에서. –