쿼리 질문드립니다. 0 4 1,884

by rabiosai [SQL Query] delete [2022.06.21 17:49:49]


DELETE FROM pin_status WHERE id=(SELECT MAX(id));

MAX에 가장 높은 id값의 행만 삭제할려고 했지만 전체 삭제가 되었습니다. 

혹시 해결방법이 있을까요?

by pajama [2022.06.21 21:16:49]

저게 실행이 되는 것도 신기하긴 하네요. 조건이 무시되는 듯하네요.

아래가 의도하신대로 삭제하는 방법입니다.

DELETE FROM pin_status WHERE id=(SELECT MAX(id) from pin_status);

 


by 마농 [2022.06.22 09:02:11]

서브쿼리에 FROM 절이 없어서 그런 거네요. (FROM pin_status 누락)
조건이 무시된 것은 아니고, 조건은 정상 성립된 것입니다.
수행 원리는
서브쿼리 안의 FROM 절의 테이블에서 id 를 가져와야 하는데
FROM 절이 없으니 서브쿼리 밖의 메인절의 id 를 가져오는 것입니다.
상관 서브쿼리가 되는 것이죠.
메인쿼리의 id 를 가져와 메인쿼리의 id 와 비교하니 참일 수 밖에 없는 조건이 됩니다.


by pajama [2022.06.22 09:11:38]

안녕하세요 마농님. where 절이 true가 되는것 같은데 어떤원리인지 이해가 안되었는데 설명 감사드립니다.


by 우리집아찌 [2022.06.22 10:27:56]

DBMS가 뭔지는 써주셔야 할것 같아요..

댓글등록
SQL문을 포맷에 맞게(깔끔하게) 등록하려면 code() 버튼을 클릭하여 작성 하시면 됩니다.
로그인 사용자만 댓글을 작성 할 수 있습니다. 로그인, 회원가입