SQL Server 2008 에서 INNER JOIN
을 사용하여 삭제하고 싶습니다.
그러나이 오류가 발생합니다.
메시지 156, 수준 15, 상태 1, 줄 15
키워드 'INNER' 근처에 잘못된 구문이 있습니다.
내 코드:
DELETE FROM WorkRecord2 INNER JOIN Employee ON EmployeeRun=EmployeeNo WHERE Company = '1' AND Date = '2013-05-06'
질문자 :nettoon493
SQL Server 2008 에서 INNER JOIN
을 사용하여 삭제하고 싶습니다.
그러나이 오류가 발생합니다.
메시지 156, 수준 15, 상태 1, 줄 15
키워드 'INNER' 근처에 잘못된 구문이 있습니다.
내 코드:
DELETE FROM WorkRecord2 INNER JOIN Employee ON EmployeeRun=EmployeeNo WHERE Company = '1' AND Date = '2013-05-06'
삭제할 테이블을 지정해야 합니다. 다음은 별칭이 있는 버전입니다.
DELETE w FROM WorkRecord2 w INNER JOIN Employee e ON EmployeeRun=EmployeeNo WHERE Company = '1' AND Date = '2013-05-06'
삭제할 테이블을 지정해야 하므로 레코드를 삭제하려는 위치에서 DELETE
와 FROM
사이에 테이블 이름을 추가하기만 하면 됩니다. 레코드를 삭제하는 동안 순서를 ORDER BY
절도 제거하십시오.
따라서 최종 쿼리는 다음과 같아야 합니다.
DELETE WorkRecord2 FROM WorkRecord2 INNER JOIN Employee ON EmployeeRun=EmployeeNo WHERE Company = '1' AND Date = '2013-05-06';
이것은 당신에게 도움이 될 것입니다 -
DELETE FROM dbo.WorkRecord2 WHERE EmployeeRun IN ( SELECT e.EmployeeNo FROM dbo.Employee e WHERE ... )
또는 이것을 시도하십시오 -
DELETE FROM dbo.WorkRecord2 WHERE EXISTS( SELECT 1 FROM dbo.Employee e WHERE EmployeeRun = e.EmployeeNo AND .... )
이 시도:
DELETE FROM WorkRecord2 FROM Employee Where EmployeeRun=EmployeeNo And Company = '1' AND Date = '2013-05-06'
그것은해야한다:
DELETE zpost FROM zpost INNER JOIN zcomment ON (zpost.zpostid = zcomment.zpostid) WHERE zcomment.icomment = "first"
SQL Server Management Studio SELECT
쿼리를 쉽게 만들 수 있습니다.
SELECT Contact.Naam_Contactpersoon, Bedrijf.BedrijfsNaam, Bedrijf.Adres, Bedrijf.Postcode FROM Contact INNER JOIN Bedrijf ON Bedrijf.IDBedrijf = Contact.IDbedrijf
실행할 수 있으며 모든 연락처가 표시됩니다.
SELECT
를 DELETE
변경하십시오.
DELETE Contact FROM Contact INNER JOIN Bedrijf ON Bedrijf.IDBedrijf = Contact.IDbedrijf
SELECT
문에서 본 모든 레코드가 제거됩니다.
동일한 절차로 더 어려운 내부 조인을 만들 수도 있습니다. 예를 들면 다음과 같습니다.
DELETE FROM Contact INNER JOIN Bedrijf ON Bedrijf.IDBedrijf = Contact.IDbedrijf INNER JOIN LoginBedrijf ON Bedrijf.IDLoginBedrijf = LoginBedrijf.IDLoginBedrijf
이 버전이 작동해야 합니다.
DELETE WorkRecord2 FROM WorkRecord2 INNER JOIN Employee ON EmployeeRun=EmployeeNo Where Company = '1' AND Date = '2013-05-06'
DELETE a FROM WorkRecord2 a INNER JOIN Employee b ON a.EmployeeRun = b.EmployeeNo Where a.Company = '1' AND a.Date = '2013-05-06'
다음 쿼리를 시도해 보세요.
DELETE WorkRecord2, Employee FROM WorkRecord2 INNER JOIN Employee ON (tbl_name.EmployeeRun=tbl_name.EmployeeNo) WHERE tbl_name.Company = '1' AND tbl_name.Date = '2013-05-06';
또 다른 방법은 CTE
사용하는 것입니다.
;WITH cte AS (SELECT * FROM workrecord2 w WHERE EXISTS (SELECT 1 FROM employee e WHERE employeerun = employeeno AND company = '1' AND date = '2013-05-06')) DELETE FROM cte
참고: delete
하려는 경우 CTE
내에서 JOIN
사용할 수 없습니다.
다음은 현재 삭제하거나 업데이트하는 데 사용하는 것입니다.
DELETE w FROM WorkRecord2 w, Employee e WHERE w.EmployeeRun = e.EmployeeNo AND w.Company = '1' AND w.Date = '2013-05-06'
Company
및 Date
대한 테이블을 지정하지 않고 수정하고 싶을 수 있습니다.
MERGE
사용하는 표준 SQL:
MERGE WorkRecord2 T USING Employee S ON T.EmployeeRun = S.EmployeeNo AND Company = '1' AND Date = '2013-05-06' WHEN MATCHED THEN DELETE;
Devart의 답변은 불완전하지만 표준 SQL이기도 합니다. 다음과 같이 보일 것입니다.
DELETE FROM WorkRecord2 WHERE EXISTS ( SELECT * FROM Employee S WHERE S.EmployeeNo = WorkRecord2.EmployeeRun AND Company = '1' AND Date = '2013-05-06' );
위의 내용에서 주목해야 할 중요한 점은 두 번째 예에서 스칼라 하위 쿼리를 요구하여 시행된 것처럼 삭제가 단일 테이블을 대상으로 한다는 것이 분명하다는 것입니다.
저에게 다양한 독점 구문 답변은 읽고 이해하기가 더 어렵습니다. 에 대한 사고 방식은 frans eilering의 답변에 가장 잘 설명되어 있다고 생각합니다. 즉, 코드를 작성하는 사람은 코드를 읽고 유지 관리할 사람에 대해 반드시 신경 쓰지 않습니다.
한 번에 두 개의 테이블에서 레코드를 삭제하는 간단한 쿼리입니다.
DELETE table1.* , table2.* FROM table1 INNER JOIN table2 ON table1.id= table2.id where table1.id ='given_id'
여기 내 SQL Server 버전이 있습니다.
DECLARE @ProfileId table(Id bigint) DELETE FROM AspNetUsers OUTPUT deleted.ProfileId INTO @ProfileId WHERE Email = @email DELETE FROM UserProfiles WHERE Id = (Select Id FROM @ProfileId)
하위 쿼리를 수행할 수도 있습니다. 아래 코드처럼:
DELETE FROM users WHERE id IN( SELECT user_id FROM Employee WHERE Company = '1' AND Date = '2013-05-06' )
출처 : http:www.stackoverflow.com/questions/16481379/how-can-i-delete-using-inner-join-with-sql-server
*args 및 **kwargs 사용 [중복] (0) | 2022.02.24 |
---|---|
어떻게 스타일링해<select> CSS만 있는 드롭다운? (0) | 2022.02.24 |
init으로 생성된 git 저장소를 완전히 삭제하는 방법은 무엇입니까? (0) | 2022.02.24 |
모나드란? (0) | 2022.02.24 |
varchar와 nvarchar의 차이점은 무엇입니까? (0) | 2022.02.24 |