유형이 x인 동일한 테이블에 엔트리가 포함된 유형이 y인 행을 모두 삭제하려면 어떻게 해야 합니까?
즉, 다른 테이블과 같은 테이블에 있는 모든 행을 삭제해야 합니다.type
쿼리에서 정의하려고 했는데, 행을 삭제할 테이블에서 선택하고 있기 때문에 쿼리를 처리할 수 없습니다.
쿼리:
DELETE FROM `user`
WHERE `user_id` IN (SELECT `user_id`
FROM `user`
WHERE `type` = 'x')
AND `type` = 'y';
어떻게 하면 이 쿼리를 다시 쓸 수 있을까요?
실행 중Update
특정 테이블의 절 MySQL에서는 서브쿼리의 "소스"와 동일한 테이블을 사용할 수 없습니다.WHERE
조건.
단, 여기서 서브쿼리를 사용할 필요는 없으며 간단한 "Self-Inner-Join"으로 충분합니다.
DELETE u1 FROM `user` AS u1
JOIN `user` AS u2
ON u2.`user` = u1.`user` AND
u2.`type` = 'x'
WHERE u1.type = 'y';
다른 서브쿼리 안에서만 사용해도 된다
DELETE FROM `user`
WHERE `user_id` IN ( select * from (SELECT `user_id`
FROM `user`
WHERE `type` = 'x') a)
AND `type` = 'y';
시도해 보셨습니까?
DELETE FROM `user`
WHERE `user_id` IN (SELECT `user_id`
FROM `user`
WHERE `type` = 'x' OR `type` = 'y')
내부 쿼리는 유형이 다음과 같은 모든 엔트리를 선택합니다.'x'
또는'y'
x 및 y 유형의 모든 사용자가 삭제됩니다.
표의 모양이 다음과 같이 생겼다고 가정합니다.
사용자
user_id | type
1 x
2 x
3 y
4 y
5 z
언급URL : https://stackoverflow.com/questions/53224295/how-to-delete-all-rows-with-type-y-that-also-contain-an-entry-in-the-same-table
'source' 카테고리의 다른 글
Talend가 열을 타임스탬프로 구문 분석할 수 없습니다. (0) | 2022.11.13 |
---|---|
외부 키를 사용하는 것이 좋습니까, 아니면 고유 ID를 할당하는 것이 좋습니까? (0) | 2022.11.13 |
PDO에서 준비한 문이 HAVING 절을 무시하는 것 같습니다. (0) | 2022.11.13 |
Python에서 "assert"의 용도는 무엇입니까? (0) | 2022.11.13 |
SELECT INTO 및 "미등록 변수" 오류 (0) | 2022.11.13 |