반응형
MySQL 선택에서 삭제하는 방법
이 코드는 MySQL 5.0에서 작동하지 않습니다. 다시 쓰려면 어떻게 해야 합니까?
DELETE FROM posts where id=(SELECT id FROM posts GROUP BY id HAVING ( COUNT(id) > 1 ))
고유 ID가 없는 열을 삭제하고 싶습니다.대부분의 경우 ID는 1개뿐이라고 덧붙입니다(구문을 사용해 봤는데 동작하지 않습니다).
SELECT
(sub) 반환 결과 세트를 표시합니다.그래서 당신은 그것을 사용할 필요가 있다.IN
,것은 아니다.=
당신의 안에서WHERE
절을 클릭합니다.
또한 이 답변에서 보듯이 동일한 쿼리 내의 하위 쿼리에서 동일한 테이블을 수정할 수 없습니다.단, 다음 중 하나를 수행할 수 있습니다.SELECT
그리고나서DELETE
다른 쿼리에 포함하거나 다른 서브쿼리를 네스트하여 내부 서브쿼리 결과에 에일리어스를 붙입니다(단, 다소 해킹적입니다).
DELETE FROM posts WHERE id IN (
SELECT * FROM (
SELECT id FROM posts GROUP BY id HAVING ( COUNT(id) > 1 )
) AS p
)
또는 Mchl의 제안대로 join을 사용합니다.
DELETE
p1
FROM posts AS p1
CROSS JOIN (
SELECT ID FROM posts GROUP BY id HAVING COUNT(id) > 1
) AS p2
USING (id)
inner join 을 사용할 수 있습니다.
DELETE
ps
FROM
posts ps INNER JOIN
(SELECT
distinct id
FROM
posts
GROUP BY id
HAVING COUNT(id) > 1 ) dubids on dubids.id = ps.id
모든 중복을 삭제하지만 각 중복 항목 중 하나를 삭제하는 방법은 다음과 같습니다.
DELETE posts
FROM posts
LEFT JOIN (
SELECT id
FROM posts
GROUP BY id
HAVING COUNT(id) = 1
UNION
SELECT id
FROM posts
GROUP BY id
HAVING COUNT(id) != 1
) AS duplicate USING (id)
WHERE duplicate.id IS NULL;
언급URL : https://stackoverflow.com/questions/4562787/how-to-delete-from-select-in-mysql
반응형
'programing' 카테고리의 다른 글
아나콘다 대 미니콘다 (0) | 2022.10.12 |
---|---|
배열에서 가장 높은 키/인덱스 검색 (0) | 2022.10.12 |
기본 키의 mariadb 최적화가 작동하지 않음 (0) | 2022.10.12 |
구현에 Javadoc 코멘트를 추가할 필요가 있습니까? (0) | 2022.10.12 |
외부 키 열의 mysql 테이블에서 고유한 제약 조건을 삭제하는 방법 (0) | 2022.10.12 |