1. 키를 추가하셨네요?
- 어떤 방식으로 추가하신지 모르겠지만 테이블을 재편성 하신거네요.
- 그럴거면 아예 Distinct 로 중복제거해서 새로 만들지 그랬어요?
2. sum, day 등의 예약어를 컬럼명으로 사용하셨네요?
- 예약어 사용시 명령어와 컬럼명이 혼동되고
- 오류 발생 가능성도 있습니다.
- 예약어 사용은 지양해야 합니다.
-- 중복 제거 생성 CREATE TABLE food_user_back AS SELECT DISTINCT * FROM food_user ; -- 중복 자료 삭제(1회성 작업, 건수를 알고 있을 때) DELETE FROM food_user WHERE name = '홍길동' AND sum = 0 AND re_date = curdate() LIMIT 6 ; -- 중복 자료 삭제 DELETE FROM food_user m WHERE name = '홍길동' AND sum = 0 AND re_date = curdate() AND EXISTS (SELECT 1 FROM food_user s WHERE s.name = m.name AND s.morning = m.morning AND s.lunch = m.lunch AND s.dinner = m.dinner AND s.ex_1 = m.ex_1 AND s.sum = m.sum AND s.re_date = m.re_date AND s.day = m.day AND s.id > m.id -- 최대 ID 남기기 -- AND s.id < m.id -- 최소 ID 남기기 ) ;
DELETE FROM food_user m WHERE name = '홍길동' AND f_sum = 0 AND re_date = curdate() AND EXISTS (SELECT 1 FROM food_user s WHERE s.name = m.name AND s.morning = m.morning AND s.lunch = m.lunch AND s.dinner = m.dinner AND s.ex_1 = m.ex_1 AND s.f_sum = m.f_sum AND s.re_date = m.re_date AND s.re_day = m.re_day AND s.id > m.id AND s.id < m.id );
-- MySQL 문법이 오라클이랑 다르네요. -- 1. 테이블 복제에는 AS 가 빠져야 하네요. CREATE TABLE food_user_back -- AS -- 요 녀석이 없어야 하네요. SELECT DISTINCT name , morning , lunch , dinner , ex_1 , f_sum , re_date , re_day FROM food_user ; -- 2. 이 부분은 문제 없구요. DELETE FROM food_user WHERE name = '홍길동' AND f_sum = 0 AND re_date = curdate() LIMIT 6 ; -- 3. 여기서는 알리아스 사용이 안되네요. DELETE FROM food_user -- m -- 요 부분 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 -- 최대 ID 남기기 -- AND s.id < food_user.id -- 최소 ID 남기기 ) ;