복붙노트

[SQL] 최대 값을 기준으로 행을 삭제

SQL

최대 값을 기준으로 행을 삭제

어떻게 최대 값을 기준으로 행을 삭제하는 MySQL의 쿼리를 구성 할 수 있습니다.

나는 시도

WHERE jobPositonId = max(jobPostionId)

하지만 오류가있어?

해결법

  1. ==============================

    1.사용하다:

    사용하다:

    DELETE FROM TABLE t1 
           JOIN (SELECT MAX(jobPositonId) AS max_id FROM TABLE) t2 
     WHERE t1.jobPositonId  = t2.max_id
    

    중복이있는 경우 마음은 그 jobPositonId 값을 가진 모든 행이 제거됩니다.

    1093 오류에 대한 멍청한 부분은 자체 참조 사이에 하위 쿼리를 배치하여 주위를 얻을 수 있다는 것입니다 :

    DELETE FROM TABLE
     WHERE jobPositonId = (SELECT x.id
                             FROM (SELECT MAX(t.jobPostionId) AS id 
                                     FROM TABLE t) x)
    

    (가) 업데이트되는 동일한 테이블에 첫 번째 수준 하위 쿼리가 있다면, UPDATE 및 DELETE 문을 사용하는 경우 MySQL은 만 확인하고 있습니다. 두 번째 수준 (또는 깊이) 하위 쿼리 다른 작품에 넣어 이유입니다. 그러나 단지 하위 쿼리를 확인하는 것 - (가) 구문은 논리적으로 동일하지만 오류를 트리거하지 않습니다 가입하세요.

  2. ==============================

    2.

    DELETE FROM table ORDER BY jobPositonId DESC LIMIT 1
    
  3. ==============================

    3.

    DELETE FROM `table_name` WHERE jobPositonId = (select max(jobPostionId) from `table_name` limit 1)
    

    또는

    DELETE FROM `table_name` WHERE jobPositonId IN (select max(jobPostionId) from `table_name` limit 1)
    
  4. ==============================

    4.이 작품 :

    이 작품 :

    SELECT @lastid := max(jobPositonId ) from t1; 
    DELETE from t1 WHERE jobPositonId = @lastid ; 
    

    두 번 데이터베이스에가는 것보다 다른,이 기술이 아무것도 잘못이다?

  5. from https://stackoverflow.com/questions/3620940/deleting-a-row-based-on-the-max-value by cc-by-sa and MIT license