카테고리 없음

[mysql] MYSQL MAX 값 선택 및 삭제

행복을전해요 2021. 2. 3. 13:02

MySQL은 LIMITfor DELETE쿼리를 지원 합니다 . MAX(trainID)발견 한 을 가져 오려고 시도하는 대신 하위 쿼리를 수행 할 때 오류가 발생하는 대신 ORDER BYLIMIT.

DELETE FROM Trans
ORDER BY trainID DESC
LIMIT 1

에서 사용하는 대신 하위 쿼리에 대해 조인하도록 대안으로 작동해야합니다 WHERE.

DELETE t.*
FROM 
  Trans t
    INNER JOIN (SELECT MAX(trainID) maxt FROM Trans) tmax ON t.trainID = tmax.maxt
    

여기에 두 가지 버전이 있습니다.

모든 행 과 일치 (SELECT MAX(trainID))하는 부울로 평가 되기 때문에 귀하의 행은 모든 행을 삭제합니다.TRUE

-------------------

이제 작동하지만 모든 항목을 선택하고 모든 항목을 삭제합니다.

이 쿼리에서 :

DELETE FROM Trans WHERE (SELECT MAX(trainID));

처리 후 결과는 다음과 같습니다.

DELETE FROM Trans WHERE (true);

따라서 이것은 => DELETE FROM Trans같고 모든 테이블 데이터가 삭제되는 이유입니다!

-------------------
DELETE FROM Trans WHERE trainId = (SELECT MAX(trainID) FROM Trans );


출처
https://stackoverflow.com/questions/22049993