DELETE FROM pin_status WHERE id=(SELECT MAX(id));
MAX에 가장 높은 id값의 행만 삭제할려고 했지만 전체 삭제가 되었습니다.
혹시 해결방법이 있을까요?
저게 실행이 되는 것도 신기하긴 하네요. 조건이 무시되는 듯하네요.
아래가 의도하신대로 삭제하는 방법입니다.
DELETE FROM pin_status WHERE id=(SELECT MAX(id) from pin_status);
안녕하세요 마농님. where 절이 true가 되는것 같은데 어떤원리인지 이해가 안되었는데 설명 감사드립니다.
서브쿼리에 FROM 절이 없어서 그런 거네요. (FROM pin_status 누락)
조건이 무시된 것은 아니고, 조건은 정상 성립된 것입니다.
수행 원리는
서브쿼리 안의 FROM 절의 테이블에서 id 를 가져와야 하는데
FROM 절이 없으니 서브쿼리 밖의 메인절의 id 를 가져오는 것입니다.
상관 서브쿼리가 되는 것이죠.
메인쿼리의 id 를 가져와 메인쿼리의 id 와 비교하니 참일 수 밖에 없는 조건이 됩니다.
DBMS가 뭔지는 써주셔야 할것 같아요..