Oracle sql 쿼리에서 "Join"을 사용하여 삭제
Oracle SQL Query에 대해 잘 모르기 때문에 다른 (조인) 테이블의 필드를 포함하는 제약을 충족해야 하는 테이블에서 일부 행을 삭제하는 데 문제가 있습니다.즉, JOIN을 포함한 행을 삭제하는 쿼리를 작성하고 싶습니다.
저 같은 경우에는 테이블이 있습니다.ProductFilters
및 다른 테이블Products
필드에서의 결합.ProductFilters.productID = Products.ID
. 행을 삭제합니다.ProductFilters
가지고 있다ID
200보다 크거나 같으며, 그들이 참조하는 제품의 이름은 '마크'입니다(이름은 제품의 필드입니다).
Oracle의 Delete Query에서 JOIN이 가능한지 여부를 먼저 알려주시기 바랍니다.이 쿼리가 기능하도록 수정하지 않으면 해당 양식에서 오류가 발생하므로 이 쿼리를 어떻게 수정해야 합니까?
DELETE From PRODUCTFILTERS pf
where pf.id>=200
And pf.rowid in
(
Select rowid from PRODUCTFILTERS
inner join PRODUCTS on PRODUCTFILTERS.PRODUCTID = PRODUCTS.ID
And PRODUCTS.NAME= 'Mark'
);
최근에 다음 구문을 배웠습니다.
DELETE (SELECT *
FROM productfilters pf
INNER JOIN product pr
ON pf.productid = pr.id
WHERE pf.id >= 200
AND pr.NAME = 'MARK')
다른 제안 코드보다 훨씬 깨끗해 보이는 것 같아요.
위의 코멘트에서 링크한 답변에 따르면 다음과 같습니다.
delete from
(
select pf.* From PRODUCTFILTERS pf
where pf.id>=200
And pf.rowid in
(
Select rowid from PRODUCTFILTERS
inner join PRODUCTS on PRODUCTFILTERS.PRODUCTID = PRODUCTS.ID
And PRODUCTS.NAME= 'Mark'
)
);
또는
delete from PRODUCTFILTERS where rowid in
(
select pf.rowid From PRODUCTFILTERS pf
where pf.id>=200
And pf.rowid in
(
Select PRODUCTFILTERS.rowid from PRODUCTFILTERS
inner join PRODUCTS on PRODUCTFILTERS.PRODUCTID = PRODUCTS.ID
And PRODUCTS.NAME= 'Mark'
)
);
where 구에는 서브쿼리를 사용합니다.삭제 쿼리의 Join 재요구의 경우 이 예에서는 조인된 테이블 "docx_document"에서 일치하지 않고 "docs_documents" 테이블에서 작성 날짜가 120일 이상인 행을 삭제합니다.
delete from docs_documents d
where d.id in (
select a.id from docs_documents a
left join docx_document b on b.id = a.document_id
where b.id is null
and floor(sysdate - a.create_date) > 120
);
저는 개인적으로EXISTS
건설하다.이 Web 페이지의 예에 기재되어 있는 바와 같이
DELETE ProductFilters pf
WHERE EXISTS (
SELECT *
FROM Products p
WHERE p."productID"=pf."productID"
AND p.NAME= 'Mark'
)
AND pf."id">=200;
하위 쿼리를 사용하십시오.
delete from productfilters
where productid in (Select id from products where name='Mark') and Id>200;
언급URL : https://stackoverflow.com/questions/12672082/delete-with-join-in-oracle-sql-query
'programing' 카테고리의 다른 글
게시 및 가져오기용 Ajax 튜토리얼 (0) | 2023.03.08 |
---|---|
Spring Boot Rest 서비스 메서드에서 응답 헤더 값을 설정하려면 어떻게 해야 합니까? (0) | 2023.03.08 |
순서 없이 동일한 속성을 가진 두 JSON을 비교하려면 어떻게 해야 합니까? (0) | 2023.03.08 |
도커의 Word press: 마운트된 볼륨에 디렉터리를 만들 수 없습니다. (0) | 2023.03.08 |
mongoimport를 사용하여 파일에서 mongodb로 json 가져오기 (0) | 2023.03.08 |