[SQL] 어떻게 MySQL은 여러 테이블에서 삭제하려면?
SQL어떻게 MySQL은 여러 테이블에서 삭제하려면?
나는 한 번에 몇 테이블에서 삭제하려합니다. 나는 약간의 연구를 수행하고,이 해낸 것
DELETE FROM `pets` p,
`pets_activities` pa
WHERE p.`order` > :order
AND p.`pet_id` = :pet_id
AND pa.`id` = p.`pet_id`
그러나, 나는이 오류를 얻고있다
내가 지금 경험과 붙어 그래서 나는, 크로스 테이블 전에 삭제 해본 적이 없다!
내가 도대체 뭘 잘못하고있는 겁니까?
해결법
-
==============================
1.사용 A는 DELETE 문에 가입하세요.
사용 A는 DELETE 문에 가입하세요.
DELETE p, pa FROM pets p JOIN pets_activities pa ON pa.id = p.pet_id WHERE p.order > :order AND p.pet_id = :pet_id
또는 당신은 사용할 수 있습니다 ...
DELETE pa FROM pets_activities pa JOIN pets p ON pa.id = p.pet_id WHERE p.order > :order AND p.pet_id = :pet_id
... pets_activities에서만 삭제
이것 좀 봐.
존재합니다 단일 테이블 삭제를 들어, 아직 참조 무결성과 함께 일을하는 다른 방법은 없습니다, IN, NOT IN 존재 등 그러나 테이블이 FROM 절 전에 별칭으로 삭제할 수있는 사용자가 지정하는 위 사람은 얻을 수있다 더 쉽게 몇 꽤 좁은 공간의 아웃됩니다. 나는이 사건의 99 %에 존재하고이 MySQL의 구문은 하루에 소요되는 1 %가에 밖으로 도달하는 경향이있다.
-
==============================
2.이 나타납니다 애완 동물과 pets_activities 간의 간단한 부모 / 자식 관계로 때문에, 당신은 더 나은 삭제 캐스케이드와 외래 키 제약 조건을 만들 해제 될 것입니다.
이 나타납니다 애완 동물과 pets_activities 간의 간단한 부모 / 자식 관계로 때문에, 당신은 더 나은 삭제 캐스케이드와 외래 키 제약 조건을 만들 해제 될 것입니다.
애완 동물 행이 삭제 될 때 그 방법은, 그와 관련된 pets_activities 행은 자동으로뿐만 아니라 삭제됩니다.
그런 다음 쿼리는 간단하게 :
delete from `pets` where `order` > :order and `pet_id` = :pet_id
-
==============================
3.이것을 사용
이것을 사용
DELETE FROM `articles`, `comments` USING `articles`,`comments` WHERE `comments`.`article_id` = `articles`.`id` AND `articles`.`id` = 4
또는
DELETE `articles`, `comments` FROM `articles`, `comments` WHERE `comments`.`article_id` = `articles`.`id` AND `articles`.`id` = 4
-
==============================
4.나는 순간에 시험에 MySQL 데이터베이스가없는,하지만 당신은 절에서 이전에 삭제하는 것을 지정 시도? 예를 들면 :
나는 순간에 시험에 MySQL 데이터베이스가없는,하지만 당신은 절에서 이전에 삭제하는 것을 지정 시도? 예를 들면 :
DELETE p, pa FROM `pets` p, `pets_activities` pa WHERE p.`order` > :order AND p.`pet_id` = :pet_id AND pa.`id` = p.`pet_id`
난 당신이 사용하는 구문은 MySQL의 새로운 버전으로 제한됩니다 생각합니다.
-
==============================
5.구문의 모습은 바로 나에게 ... 그것은 내부 조인 사용 변경하려고 ...
구문의 모습은 바로 나에게 ... 그것은 내부 조인 사용 변경하려고 ...
이것 좀 보라.
-
==============================
6.2017 년이 글을 읽는 사람에게, 이것은 내가 비슷한 짓을 한 방법이다.
2017 년이 글을 읽는 사람에게, 이것은 내가 비슷한 짓을 한 방법이다.
DELETE pets, pets_activities FROM pets inner join pets_activities on pets_activities.id = pets.id WHERE pets.`order` > :order AND pets.`pet_id` = :pet_id
일반적으로, 여러 테이블에서 행을 삭제, 내가 따라 구문은 아래와 같습니다. 이 솔루션은 두 테이블 사이에 관계가 있다는 가정에 기초한다.
DELETE table1, table2 FROM table1 inner join table2 on table2.id = table1.id WHERE [conditions]
-
==============================
7.난 당신이 MySQL이 좋은 설명과 함께 문을 가입 DELETE 사용하여 여러 테이블에서 데이터를 삭제하는 방법을 보여주는이 문서를 발견했다.
난 당신이 MySQL이 좋은 설명과 함께 문을 가입 DELETE 사용하여 여러 테이블에서 데이터를 삭제하는 방법을 보여주는이 문서를 발견했다.
from https://stackoverflow.com/questions/3331992/how-to-delete-from-multiple-tables-in-mysql by cc-by-sa and MIT license
'SQL' 카테고리의 다른 글
[SQL] 어떻게 SQL Server의 테이블에서 열 이름을 얻을 수 있나요? (0) | 2020.03.13 |
---|---|
[SQL] 이 쿼리는 쉼표로 구분 된 목록의 SQL 서버를 만들기 위해 무엇을? (0) | 2020.03.13 |
[SQL] 어떻게 두 숫자 사이의 숫자의 범위를 생성하는? (0) | 2020.03.13 |
[SQL] SQL 서버 - 저장 프로 시저에서 SELECT (0) | 2020.03.13 |
[SQL] SQL - 그룹에 의해 별칭을 사용 (0) | 2020.03.13 |