해결된 질문
작성
·
124
1
안녕하세요.
워크벤치로 하다보니 동일한 쿼리문에 에러가 나는 경우가 더러 있네요. 구글링으로 보완해가면서 테스트 중입니다.
카페 사용관련 가상데이터 설명 (21:06분) 내용 중에 '1일2회 이상 등록된 전화번호 및 결제일자를 삭제 하는 쿼리문 실행시,
"" 요런 메시지가 나와서, 구글링을 해보니, 삭제시 자기 테이블을 조회할 수 없기 때문이라고 나와서 수정을 했는데요.
요렇게 하면 제대로 수행이 되는 것 같습니다.
근데 궁금한 건... 강의내용의 쿼리문은
고객의 해당일자 전체를 삭제하는 것 같은데요.
하루 최초 또는 마지막 건수를 남기고 나머지를 삭제하는 쿼리문을 좀 알 수 있을까요?
답변 1
0
안녕하세요 류재안 님.
우선 제가 사용하는 MariaDB서버 버전을 알려드리면 10.6 및 11.x 입니다. 혹시 버전 문제 소지가 있을 수 있어 말씀드립니다.
요청하신 쿼리는 다음과 같습니다.
DELETE FROM sc_payment
WHERE (usr_phnumber, DATE_FORMAT(pay_dt,'%Y-%m-%d %H'))
IN (
SELECT usr_phnumber, pay_dt FROM (
SELECT usr_phnumber,DATE_FORMAT(pay_dt,'%Y-%m-%d %H') AS pay_dt
,ROW_NUMBER() OVER
(PARTITION BY usr_phnumber
ORDER BY usr_phnumber,DATE_FORMAT(pay_dt,'%Y-%m-%d %H') DESC) AS row_number_
FROM sc_payment
) a
WHERE a.row_number_ != 1
);
위의 쿼리는 년-월-일-시까지만 보았을 때 하루동안 중복된 건들을 처리합니다. 초 단위까지 하시려면 DATE_FORMAT의 시간형식 포맷을 초 단위까지 적절히 기재해 주시면 됩니다.
수행 내용은 동일한 전화번호에 대해 하루 동안 마지막 건수만 남기고 나머지를 삭제하는 쿼리입니다.
유사한 내용이 채널에 있어 URL을 남깁니다.
https://www.youtube.com/watch?v=tqClIDsoa3U&t=50s
네, 감사합니다.