반응형
    
    
    
  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 |