쿼리문 수정 질문 드립니다. 0 2 566

by 데므 mysql query [2019.10.11 11:35:02]


오류.png (62,230Bytes)

안녕하세요. 우선 이렇게 질문을 해결하려고 들어와 주셔서 감사합니다. 이전 개시글에서 마농님이 알려주셨던 이 중복 제거 코드가 낮은 버전으로 사용할 일이 있어서 10.1.38 버전에서 실행시켰더니 사진과 같은 오류가 발생했습니다.

DELETE
  FROM food_user 
 WHERE name    = '홍길동'
   AND f_sum   = 0
   AND re_date = curdate()
   AND EXISTS (SELECT 1
                 FROM food_user s
                WHERE s.name    = food_user.name 
                  AND s.morning = food_user.morning
                  AND s.lunch   = food_user.lunch  
                  AND s.dinner  = food_user.dinner 
                  AND s.ex_1    = food_user.ex_1   
                  AND s.f_sum   = food_user.f_sum   
                  AND s.re_date = food_user.re_date
                  AND s.re_day  = food_user.re_day   
                  AND s.id      < food_user.id     
               );
오류를 해결하려고 
DELETE
  FROM food_user 
 WHERE name    = '홍길동'
   AND f_sum   = 0
   AND re_date = curdate()
   AND EXISTS (SELECT * from (SELECT 1
                 FROM food_user s
                WHERE s.name    = name 
                  AND s.morning = morning
                  AND s.lunch   = lunch  
                  AND s.dinner  = dinner 
                  AND s.ex_1    = ex_1   
                  AND s.f_sum   = f_sum   
                  AND s.re_date = re_date
                  AND s.re_day  = re_day   
                  AND s.id      < id     
               )tmp);

그리고

DELETE
  FROM food_user 
 WHERE name    = '홍길동'
   AND f_sum   = 0
   AND re_date = curdate()
   AND EXISTS (SELECT * from (SELECT 1
                 FROM food_user s,food_user k
                WHERE s.name    = k.name 
                  AND s.morning = k.morning
                  AND s.lunch   = k.lunch  
                  AND s.dinner  = k.dinner 
                  AND s.ex_1    = k.ex_1   
                  AND s.f_sum   = k.f_sum   
                  AND s.re_date = k.re_date
                  AND s.re_day  = k.re_day   
                  AND s.id      < k.id     
               )tmp);

이렇게 두 가지 쿼리문을 짜봤지만 이 두가지도 원하는 동작대로 안돼서 이렇게 질문 남겨봅니다. 버전을 업그레이드 시킬 상황이 아니어서 쿼리문으로 해결을 하고 싶은데 도움을 주시면 감사하겠습니다.

by 마농 [2019.10.16 15:57:16]
DELETE t
  FROM food_user t
 INNER JOIN
       (SELECT name, morning, lunch, dinner, ex_1, f_sum, re_date, re_day
             , MIN(id) id
          FROM food_user
         WHERE name    = 1
           AND f_sum   = 1
           AND re_date = 1
         GROUP BY name, morning, lunch, dinner, ex_1, f_sum, re_date, re_day
        ) s
    ON s.name    = t.name
   AND s.morning = t.morning
   AND s.lunch   = t.lunch
   AND s.dinner  = t.dinner
   AND s.ex_1    = t.ex_1
   AND s.f_sum   = t.f_sum
   AND s.re_date = t.re_date
   AND s.re_day  = t.re_day
   AND s.id      < t.id
;
DELETE
  FROM food_user
 WHERE id IN (SELECT DISTINCT t.id
                FROM food_user t
               INNER JOIN food_user s
                  ON s.name    = t.name
                 AND s.morning = t.morning
                 AND s.lunch   = t.lunch
                 AND s.dinner  = t.dinner
                 AND s.ex_1    = t.ex_1
                 AND s.f_sum   = t.f_sum
                 AND s.re_date = t.re_date
                 AND s.re_day  = t.re_day
                 AND s.id      < t.id
              )
;

 


by 데므 [2019.10.21 15:18:31]

답변을 늦게 드려서 정말 죄송합니다. 해결해주셔서 감사드려요

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