반응형
SQL DELETE with JOIN another table for WHERE condition
테이블 guide_category
과 관련이없는 행 guide
(죽은 관계) 을 삭제해야합니다 .
여기에 내가하고 싶은 것이 있지만 물론 작동하지 않습니다.
DELETE FROM guide_category AS pgc
WHERE pgc.id_guide_category IN (SELECT id_guide_category
FROM guide_category AS gc
LEFT JOIN guide AS g ON g.id_guide = gc.id_guide
WHERE g.title IS NULL)
오류:
FROM 절에서 업데이트 할 대상 테이블 'guide_category'를 지정할 수 없습니다.
잠금 구현 문제로 인해 MySQL
영향을받는 테이블을 DELETE
또는로 참조 할 수 없습니다 UPDATE
.
JOIN
대신 여기 를 만들어야합니다 .
DELETE gc.*
FROM guide_category AS gc
LEFT JOIN
guide AS g
ON g.id_guide = gc.id_guide
WHERE g.title IS NULL
또는 다음을 사용하십시오 NOT IN
.
DELETE
FROM guide_category AS gc
WHERE id_guide NOT IN
(
SELECT id_guide
FROM guide
)
귀하의 설명에서 다음으로 충분하다고 생각합니다.
DELETE FROM guide_category
WHERE id_guide NOT IN (SELECT id_guide FROM guide)
관련된 테이블에 대한 참조 무결성 제약이 없다고 가정합니다.
이해하기 쉽도록이 샘플 SQL 스크립트를 사용해보십시오.
CREATE TABLE TABLE1 (REFNO VARCHAR(10))
CREATE TABLE TABLE2 (REFNO VARCHAR(10))
--TRUNCATE TABLE TABLE1
--TRUNCATE TABLE TABLE2
INSERT INTO TABLE1 SELECT 'TEST_NAME'
INSERT INTO TABLE1 SELECT 'KUMAR'
INSERT INTO TABLE1 SELECT 'SIVA'
INSERT INTO TABLE1 SELECT 'SUSHANT'
INSERT INTO TABLE2 SELECT 'KUMAR'
INSERT INTO TABLE2 SELECT 'SIVA'
INSERT INTO TABLE2 SELECT 'SUSHANT'
SELECT * FROM TABLE1
SELECT * FROM TABLE2
DELETE T1 FROM TABLE1 T1 JOIN TABLE2 T2 ON T1.REFNO = T2.REFNO
귀하의 경우는 다음과 같습니다.
DELETE pgc
FROM guide_category pgc
LEFT JOIN guide g
ON g.id_guide = gc.id_guide
WHERE g.id_guide IS NULL
어때 :
DELETE guide_category
WHERE id_guide_category IN (
SELECT id_guide_category
FROM guide_category AS gc
LEFT JOIN guide AS g
ON g.id_guide = gc.id_guide
WHERE g.title IS NULL
)
참고URL : https://stackoverflow.com/questions/1980738/sql-delete-with-join-another-table-for-where-condition
반응형
'IT TIP' 카테고리의 다른 글
Android Studio에서 '출시'APK를 빌드하는 방법은 무엇입니까? (0) | 2020.11.01 |
---|---|
ggplot geom_text 글꼴 크기 제어 (0) | 2020.11.01 |
현재 JavaScript의 'let'키워드를 지원하는 브라우저는 무엇입니까? (0) | 2020.11.01 |
색상 화 된 출력을 셸 리디렉션을 통해 캡처 할 수 있습니까? (0) | 2020.11.01 |
bash에서 튜플을 반복합니까? (0) | 2020.11.01 |