[SQL] 어떻게 MySQL의에서 선택에서 삭제?
SQL어떻게 MySQL의에서 선택에서 삭제?
이 코드는 다시 쓰기에 그것을 작동하게하는 방법을, 5.0이 작동하지 않습니다
DELETE FROM posts where id=(SELECT id FROM posts GROUP BY id HAVING ( COUNT(id) > 1 ))
나는 고유 ID를 해달라고 열을 삭제할. 나는 그것의 하나의 ID 만이 시간의 대부분 추가합니다 (I 구문의 시도를하고 그것은뿐만 아니라 작업을 나던).
해결법
-
==============================
1.SELECT (하위) 쿼리 결과 집합을 반환합니다. 당신이 IN을 사용할 필요가 그래서가 아니라 WHERE 절에 =.
SELECT (하위) 쿼리 결과 집합을 반환합니다. 당신이 IN을 사용할 필요가 그래서가 아니라 WHERE 절에 =.
이 답변에서와 같이 또한 같은 쿼리에서 하위 쿼리에서 동일한 테이블을 수정할 수 없습니다. 그러나, 당신도 다음 별도의 쿼리에서 삭제, 또는 둥지 다른 하위 쿼리를 선택 할 수있는 내부 하위 쿼리 결과 별칭 (외모가 아니라 해키하지만)
DELETE FROM posts WHERE id IN ( SELECT * FROM ( SELECT id FROM posts GROUP BY id HAVING ( COUNT(id) > 1 ) ) AS p )
또는 사용은 같은 Mchl에 의해 제안 조인.
-
==============================
2.
DELETE p1 FROM posts AS p1 CROSS JOIN ( SELECT ID FROM posts GROUP BY id HAVING COUNT(id) > 1 ) AS p2 USING (id)
-
==============================
3.당신이 내부 사용할 수 있습니다 조인
당신이 내부 사용할 수 있습니다 조인
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
-
==============================
4.당신은 중복의 각 세트에서 모든 중복,하지만 하나를 삭제하려면이 하나 개의 솔루션입니다 :
당신은 중복의 각 세트에서 모든 중복,하지만 하나를 삭제하려면이 하나 개의 솔루션입니다 :
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;
from https://stackoverflow.com/questions/4562787/how-to-delete-from-select-in-mysql by cc-by-sa and MIT license
'SQL' 카테고리의 다른 글
[SQL] MySQL의에서 SET 자동 커밋 = 1 START의 TRANSACTION의 차이는 (유무 내가 뭔가를 놓친?) (0) | 2020.04.23 |
---|---|
[SQL] SQL Server의 문자열에서 모든 공백을 제거 (0) | 2020.04.23 |
[SQL] 나는 오라클 SQL에서 BLOB에서 텍스트 내용을 얻는 방법 (0) | 2020.04.23 |
[SQL] MySQL의에서이 연산자는 <=> 무엇입니까? (0) | 2020.04.23 |
[SQL] 안드로이드 SQLite는 : UPDATE 문 (0) | 2020.04.23 |