[SQL] 의 가입 사용할 때 어떻게 MS Access에서 삭제?
SQL의 가입 사용할 때 어떻게 MS Access에서 삭제?
나는 또한이 JOIN 절을 사용하는 경우 MS Access에서 DELETE 절을 사용하여 문제를 시도하고있다. 나는 이것이 DISTINCTROW 키 단어를 사용하여 수행 할 수 있습니다 알 수 있습니다.
예를 들어, 다음 SQL 문은 삭제를 허용하지 않습니다
DELETE Table1.*
FROM Table1 INNER JOIN Table2 ON Table1.Name=Table2.Name;
그러나이 문을 수행합니다
DELETE DISTINCTROW Table1.*
FROM Table1 INNER JOIN Table2 ON Table1.Name=Table2.Name;
해결법
-
==============================
1.
Delete Table1.* From Table1 Where Exists( Select 1 From Table2 Where Table2.Name = Table1.Name ) = True
모호한 결과를 만들 수 있습니다 특히 때문에 내 대답에 확장하려면, 공식 SQL 사양 사용을 제공하지 않는 행동 쿼리에 조인. 따라서, 더 나은 (및 액세스가 훨씬 더 행복하다) 당신이 여기 가지고있는 것처럼 실행 쿼리에 조인 사용하지 않도록 할 수 있습니다. 액세스 DISTINCTROW를 원하는 이유는 그것이이 표 행하므로 액세스가 혼동됩니다 (즉, 여러 관련 표 2에서 행이)의 중복을 만들 것 두 테이블 사이에 가입 가능성이 있다는 것입니다. 나는 또한 당신이 가입 사용하려고하고 기본 키가없는 경우 액세스가 보크 것을 발견했습니다. 일반적으로, 당신이 할 수있는 경우는 실행 쿼리에 참여하지 않도록하는 것이 좋습니다.
-
==============================
2.하나의 문제는 알고 있어야합니다 :이 테이블 / 쿼리 별칭과 함께 작업을하지 않습니다!
하나의 문제는 알고 있어야합니다 :이 테이블 / 쿼리 별칭과 함께 작업을하지 않습니다!
DELETE a.* from tblA as A where exists (select 1 from tblB as B where a.id=b.id)
삭제 ALL은 TBLA에 기록! 같은 결과 (액세스 2010) - 나는 그것이 별도 테이블 및 TLB에 대한 별칭을 사용했습니다.
(나는 종종 삭제하기 전에 사용하는)뿐만 아니라 SELECT로 발생 ...
-
==============================
3.
DELETE a.* FROM tblA AS A WHERE EXISTS (SELECT 1 FROM tblB AS B WHERE a.id=b.id)
이 시도
DELETE tblA FROM tblB WHERE EXISTS (SELECT * FROM tblA AS A,tblB AS B WHERE A.id=B.id)
from https://stackoverflow.com/questions/5585732/how-to-delete-in-ms-access-when-using-joins by cc-by-sa and MIT license
'SQL' 카테고리의 다른 글
[SQL] SQL 서버에 데이터를 삽입하는 방법 (0) | 2020.05.21 |
---|---|
[SQL] SQL 서버의 최대 열 주위 일은 1024 8킬로바이트의 레코드 크기 제한 (0) | 2020.05.21 |
[SQL] 웹 응용 프로그램에서 밖으로 쿼리 시간이지만 관리 스튜디오에서 벌금을 실행 (0) | 2020.05.21 |
[SQL] MySQL의 대량 INSERT 또는 UPDATE (0) | 2020.05.21 |
[SQL] 오라클에서는 뷰를 통해 레코드를 INSERT 또는 UPDATE 할 수 있습니까? (0) | 2020.05.21 |