본문 바로가기
MySql

MySQL 중첩 된 쿼리를 기반으로 테이블에서 SQL-Delete

by 베이스 공부 2020. 9. 22.
반응형

mySQL 데이터베이스에는 다음과 같은 세 개의 테이블이 있습니다.

orders: order_sequence_number, contact_id, date_ordered ...

orderdetail: order_sequence_number ...

person: contact_id ...

2 년 이상 된 date_order 값을 가진 세 테이블의 모든 행을 삭제하려고하지만 date_order 필드는 orders 테이블에만 표시되지만 테이블에는 order_sequence_number 및 contact_id 필드를 통해 다른 두 테이블에 대한 링크가 있습니다.

그래서, 나는 다음과 같이 약간 상상할 것입니다. ...

SELECT * FROM orders WHERE date_ordered BETWEEN X AND Y

그런 다음 그 레코드 세트로

DELETE FROM orderdetail WHERE orderdetail.order_sequence_number IN (THE ABOVE)

사람 테이블 등 ...하지만 운이 없습니다.

나에게 일종의 중첩 하위 쿼리처럼 보이지만 그러한 쿼리를 수행하는 방법을 이해하는 데 어려움을 겪고 있으며 그것의 복잡한 성격을 둘러 볼 수 없습니다 ...

어떤 포인터라도 대단히 감사하겠습니다.

 

해결 방법

 

DELETE FROM orderdetail 
WHERE order_sequence_number IN 
(
    SELECT id 
    FROM orders 
    WHERE date_ordered BETWEEN X AND Y
)

 

참조 페이지 https://stackoverflow.com/questions/9078922

 

 

반응형

댓글