안녕하세요. 우선 이렇게 질문을 해결하려고 들어와 주셔서 감사합니다. 이전 개시글에서 마농님이 알려주셨던 이 중복 제거 코드가 낮은 버전으로 사용할 일이 있어서 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);
이렇게 두 가지 쿼리문을 짜봤지만 이 두가지도 원하는 동작대로 안돼서 이렇게 질문 남겨봅니다. 버전을 업그레이드 시킬 상황이 아니어서 쿼리문으로 해결을 하고 싶은데 도움을 주시면 감사하겠습니다.
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 ) ;